Вдогонку к предыдущей статье, которая была посвящена работе с Button в QML, рассмотрим механизм добавления иконок для этих самых кнопок. И сперва подготовим необходимый файл, я возьму иконку из одного из своих недавних проектов, выглядит она так:

- размер - 200*200
- формат - .png
- фон прозрачный
В принципе, эти три пункта исчерпывают особенности изображения, так что возвращаемся к нашему пустому QML проекту с кнопкой посреди окна. На данном этапе финишировала предыдущая статья:

Теперь:
- сделаем кнопку квадратной
- изменим цвета градиентов
- уберем текст
- добавим иконку
Начнем с первых трех пунктов, в main.qml в результате получаем:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Window {
width: 320
height: 240
visible: true
title: qsTr("QML Button Review")
Button {
id: testButton
anchors.centerIn: parent
background: Rectangle {
Gradient {
id: normalGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#00d793" }
GradientStop { position: 1.0; color: "#252525" }
}
Gradient {
id: hoveredGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#0cffb2" }
GradientStop { position: 1.0; color: "#252525" }
}
Gradient {
id: pressedGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#00875c" }
GradientStop { position: 1.0; color: "#252525" }
}
implicitWidth: 100
implicitHeight: 100
gradient: testButton.pressed ? pressedGradient :
testButton.hovered ? hoveredGradient :
normalGradient
radius: 10
border.width: 2.0
border.color: "#000000"
}
}
}

Здесь, соответственно, три состояния кнопки - обычное, при наведении курсора и при нажатии.
Дело за малым, осталось то, ради чего все и затевалось - добавить иконку. На всякий случай пройдем поэтапно процесс добавления нашего .png файла в проект:
- Добавляем в проект файл ресурсов, пусть будет именоваться icons.qrc - Файл > Создать файл или проект (Ctrl + N):

- В папке с проектом добавляем подпапку для иконок, в которую кладем тот самый .png файл (test_icon.png):

- В Qt Creator'е правой кнопкой на icons.qrc > Добавить существующие файлы и выбираем test_icon.png.
- По итогу имеем:

Все, приготовления на этом завершены, для добавления иконки к Button есть специальное свойство, что неудивительно, называющееся icon. Им и воспользуемся:
icon.width: 100 icon.height: 100 icon.color: "transparent" icon.source: "icons/test_icon.png"
Итоговый вид main.qml таким образом следующий:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Window {
width: 320
height: 240
visible: true
title: qsTr("QML Button Review")
Button {
id: testButton
anchors.centerIn: parent
icon.width: 100
icon.height: 100
icon.color: "transparent"
icon.source: "icons/test_icon.png"
background: Rectangle {
Gradient {
id: normalGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#00d793" }
GradientStop { position: 1.0; color: "#252525" }
}
Gradient {
id: hoveredGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#0cffb2" }
GradientStop { position: 1.0; color: "#252525" }
}
Gradient {
id: pressedGradient
GradientStop { position: 0.0; color: "#252525" }
GradientStop { position: 0.5; color: "#00875c" }
GradientStop { position: 1.0; color: "#252525" }
}
implicitWidth: 100
implicitHeight: 100
gradient: testButton.pressed ? pressedGradient :
testButton.hovered ? hoveredGradient :
normalGradient
radius: 10
border.width: 2.0
border.color: "#000000"
}
}
}
Результат проделанных действий:

Вот на этой мажорной ноте и закачиваем обзор кастомизации Button в QML, до скорых встреч, следите за обновлениями )



