Spec-Zone.ru › Qt 5.14

Иконки в Qt Quick Controls

Qt Quick Controls поддерживает иконки с Qt 5.10. Это значит, что кнопки, делегаты элементов и пункты меню теперь могут отображать иконку помимо текстовой метки.

Использование иконок

AbstractButton и Action предоставляют следующие свойства для установки иконок:

  • icon.name
  • icon.source
  • icon.width
  • icon.height
  • icon.color

Иконки темы ссылаются на имя, а обычные иконки — на URL источника. Оба icon.name и icon.source могут быть установлены, чтобы гарантировать, что иконка всегда будет найдена. Если иконка найдена в теме, она всегда будет использоваться; даже если icon.source также установлено. Если иконка не найдена в теме, вместо неё будет использована icon.source.

Button {
    icon.name: "edit-cut"
    icon.source: "images/cut.png"
}

Каждый стиль Qt Quick Controls 2 запрашивает размер и цвет иконки по умолчанию в соответствии со своими рекомендациями, но можно переопределить эти значения, установив свойства icon.width, icon.height, и icon.color.

Изображение, загружаемое иконкой, у которой width и height не установлены, зависит от типа используемой иконки. Для иконок темы будет выбран ближайший доступный размер. Для обычных иконок поведение аналогично свойству sourceSize объекта Image.

Цвет иконки по умолчанию задаётся так, чтобы он соответствовал цвету текста в различных состояниях. Чтобы использовать иконку с оригинальными цветами, установите цвет в "transparent".

Button {
    icon.color: "transparent"
    icon.source: "images/logo.png"
}

Для кнопок свойство display можно использовать для управления отображением иконки и текста внутри кнопки.

Темы иконок

Совместимые темы иконок должны следовать спецификации темы иконок freedesktop, которую можно получить здесь: http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html.

Традиционно, только Linux и UNIX поддерживают темы иконок на уровне платформы, но можно включить совместимую тему иконок в приложение, чтобы использовать тематические иконки на любой платформе.

Пути поиска темы иконок по умолчанию зависят от платформы. В Linux и UNIX путь поиска будет использовать переменную среды XDG_DATA_DIRS, если она доступна. На всех платформах папка ресурсов :/icons используется в качестве резервного варианта. Пользовательские пути поиска темы иконок могут быть установлены с помощью QIcon::setThemeSearchPaths().

Следующий пример включает тему иконок под названием mytheme в ресурсы приложения, используя систему ресурсов Qt.

<RCC>
    <qresource prefix="/">
        <file>icons/mytheme/index.theme</file>
        <file>icons/mytheme/32x32/myicon.png</file>
        <file>icons/mytheme/32x32@2/myicon.png</file>
    </qresource>
</RCC>

Файл index.theme описывает общие атрибуты темы иконок и перечисляет доступные каталоги иконок темы:

[Icon Theme]
Name=mytheme
Comment=My Icon Theme

Directories=32x32,32x32@2

[32x32]
Size=32
Type=Fixed

[32x32@2]
Size=32
Scale=2
Type=Fixed

Для использования включённой темы иконок приложение должно вызвать QIcon::setThemeName() перед загрузкой основного файла QML:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QIcon>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QIcon::setThemeName("mytheme"); // <--

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

Теперь можно использовать именованные иконки из включенной темы иконок, не указывая резервный источник:

Button {
    icon.name: "myicon"
}

Пример галереи Gallery example и демонстрация для носимых устройств Wearable Demo предоставляют полные исполняемые приложения с включенной темой иконок.

Дополнительная информация

  • Поддержка High-DPI в Qt Quick Controls

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qtquickcontrols2-icons.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API