Spec-Zone.ru › Qt 5.14

Стиль Imagine

Стиль Imagine основан на настраиваемых графических ресурсах. Подробнее...

Оператор импорта: import QtQuick.Controls.Imagine 2.12
С: Qt 5.10

Прикреплённые свойства

  • path : строка

Подробное описание

Стиль Imagine основан на графических ресурсах. Стиль поставляется с набором стандартных изображений, но их можно легко изменить, предоставив каталог с изображениями, использующими предопределённую систему именования.

Стиль Imagine с предопределёнными изображениями

Чтобы запустить приложение со стилем Imagine, см. Использование стилей в Qt Quick Controls.

Имена файлов

Файлы изображений имеют следующую структуру имён:

<control>-<element>-<states>

Разделы <control> и <element> обязательны, а раздел <states> — необязателен. Например, если для кнопки предоставлен один файл с именем "button-background.9.png", он будет использоваться для каждого состояния, которое Button поддерживает. Разработчик сам решает, для каких состояний предоставлять изображения. Однако рекомендуется предоставлять изображения для наиболее распространённых состояний элементов управления, таких как disabled, pressed, и т. д. Это обеспечит визуальное поведение интерактивных элементов управления, соответствующее ожиданиям конечного пользователя.

Справочник по элементам

В следующей таблице перечислены поддерживаемые элементы для каждого элемента управления, вместе с возможными состояниями этого элемента и ожидаемым расширением файла. Элемент — это изображение, представляющее определённую визуальную часть элемента управления. Например, элемент Button "background" представляет собой его фон.

Управление Элемент Состояния Расширение
Окно приложения фон активное .9.png (или .png)
наложение модальное .9.png (или .png)
Индикатор выполнения анимация отключено, выполняется, зеркально, наведение .webp
фон то же, что и выше .webp
Кнопка фон отключено, нажато, отмечено, с возможностью отметки, фокусировано, выделено, плоское, зеркально, наведение .9.png
Флажок фон отключено, нажато, отмечено, частично отмечено, фокусировано, зеркально, наведение .9.png (или .png)
индикатор то же, что и выше .png
Делегат флажка фон отключено, нажато, отмечено, частично отмечено, фокусировано, выделено, зеркально, наведение .9.png (или .png)
индикатор то же, что и выше .png
Комбо-поле фон отключено, нажато, редактируемо, открыто, фокусировано, зеркально, наведение, плоское .9.png (или .png)
индикатор то же, что и выше .png
выпадающее меню то же, что и выше .9.png (или .png)
Кнопка с задержкой фон отключено, нажато, отмечено, с возможностью отметки, фокусировано, зеркально, наведение .9.png (или .png)
прогресс то же, что и выше .9.png (или .png)
маска то же, что и выше .9.png (или .png)
Цифровая шкала фон отключено, нажато, фокусировано, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
Диалоговое окно фон модальное, затемнённое .9.png (или .png)
заголовок то же, что и выше .9.png (или .png)
наложение модальное .9.png (или .png)
Группа кнопок диалогового окна фон отключено, зеркально .9.png (или .png)
Панель фон модальное, затемнённое, верхнее, левое, правое, нижнее .9.png (или .png)
наложение модальное .9.png (или .png)
Рамка фон отключено, зеркально .9.png (или .png)
Группа фон отключено, зеркально .9.png (или .png)
заголовок то же, что и выше .9.png (или .png)
Делегат элемента фон отключено, нажато, фокусировано, выделено, зеркально, наведение .9.png (или .png)
Метка фон отключено, зеркально, наведение .9.png (или .png)
Меню фон модальное, затемнённое .9.png (или .png)
наложение модальное .9.png (или .png)
Элемент меню стрелка отключено, нажато, отмечено, фокусировано, выделено, зеркально, наведение .png
фон то же, что и выше .9.png (или .png)
индикатор то же, что и выше .png
Разделитель меню фон отключено, зеркально .9.png (или .png)
разделитель то же, что и выше .9.png (или .png)
Страница фон отключено, зеркально .9.png (или .png)
Индикатор страниц фон отключено, зеркально, наведение .9.png (или .png)
делегат отключено, нажато, текущее, зеркально, наведение .png
Панель фон отключено, зеркально .9.png (или .png)
Поп-ап фон модальное, затемнённое .9.png (или .png)
наложение модальное .9.png (или .png)
Полоса прогресса анимация отключено, зеркально, наведение .png
фон отключено, неопределённо, зеркально, наведение .9.png (или .png)
маска то же, что и выше .9.png (или .png)
прогресс то же, что и выше .9.png (или .png)
Радиокнопка фон отключено, нажато, отмечено, фокусировано, зеркально, наведение .9.png (или .png)
индикатор то же, что и выше .png
Делегат радиокнопки фон отключено, нажато, отмечено, фокусировано, выделено, зеркально, наведение .9.png (или .png)
индикатор то же, что и выше .png
Двухточечный ползунок фон вертикальное, горизонтальное, отключено, фокусировано, зеркально, наведение .9.png (или .png)
Двухточечный ползунок прогресс то же, что и выше .9.png (или .png)
ручка первая, вторая, вертикальное, горизонтальное, отключено, нажато, фокусировано, зеркально, наведение .png
Кнопка круглой формы фон отключено, нажато, отмечено, с возможностью отметки, фокусировано, выделено, плоское, зеркально, наведение .9.png (или .png)
Скроллбар фон вертикальное, горизонтальное, отключено, интерактивное, нажато, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
Индикатор скролла фон вертикальное, горизонтальное, отключено, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
Скроллвью фон отключено, зеркально .9.png (или .png)
Ползунок фон вертикальное, горизонтальное, отключено, нажато, фокусировано, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
прогресс то же, что и выше .9.png (или .png)
Поле ввода фон отключено, редактируемо, фокусировано, зеркально, наведение .9.png (или .png)
редактор отключено, фокусировано, зеркально, наведение .9.png (или .png)
индикатор вверх, вниз, отключено, редактируемо, нажато, фокусировано, зеркально, наведение .9.png (или .png)
Стэквью фон отключено, зеркально .9.png (или .png)
Делегат свайпа фон отключено, нажато, фокусировано, выделено, зеркально, наведение .9.png (или .png)
Свайпвью фон вертикальное, горизонтальное, отключено, интерактивное, фокусировано, зеркально .9.png (или .png)
Переключатель фон отключено, нажато, отмечено, фокусировано, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
индикатор то же, что и выше .9.png (или .png)
Делегат переключателя фон отключено, нажато, отмечено, фокусировано, выделено, зеркально, наведение .9.png (или .png)
ручка то же, что и выше .9.png (или .png)
индикатор то же, что и выше .9.png (или .png)
Панель вкладок фон отключено, заголовок, подвал, зеркально .9.png (или .png)
Кнопка вкладки фон выключенный, нажатый, выбранный, фокусированный, зеркальный, наведённый .9.png (или .png)
Область текста фон выключенный, фокусированный, зеркальный, наведённый .9.png (или .png)
Поле ввода текста фон выключенный, фокусированный, зеркальный, наведённый .9.png (или .png)
Панель инструментов фон выключенный, заголовок, подвал, зеркальный .9.png (или .png)
Кнопка инструментов фон выключенный, нажатый, выбранный, с возможностью выбора, фокусированный, выделенный, плоский, зеркальный, наведённый .9.png (или .png)
Разделитель инструментов фон вертикальный, горизонтальный, выключенный, зеркальный .9.png (или .png)
разделитель то же, что и выше .9.png (или .png)
Подсказка фон .9.png (или .png)
Переключатель фон выключенный, фокусированный, зеркальный, наведённый .9.png (или .png)

Примеры активов

В следующей таблице перечислены примеры активов (взятых из стандартных активов стиля Imagine) для всех элементов управления. Список не является исчерпывающим, поскольку не все элементы нуждаются в активах, но он может служить руководством при создании собственных активов.

Управление Элемент Состояния Актив Примечания
Окно приложения фон

См. сноску 1
наложение

См. сноску 1
наложение модальное

См. сноску 1
Кнопка фон

фон отключено

фон получил фокус

фон нажато

фон выбрано

фон выбрано, отключено

фон выбрано, получил фокус

фон выбрано, наведено

фон выделено

фон выделено, отключено

фон выделено, получил фокус

фон выделено, наведено

фон выделено, нажато

фон выделено, выбрано

фон наведено

фон плоский

фон плоский, отключено

фон плоский, наведено

фон плоский, нажато

фон плоский, выбрано

Флажок индикатор

индикатор отключено

индикатор нажато

индикатор выбрано

индикатор выбрано, нажато

индикатор выбрано, наведено

индикатор выбрано, получил фокус

индикатор частично, выбрано

индикатор частично, выбрано, нажато

индикатор частично, выбрано, получил фокус

индикатор частично, выбрано, наведено

индикатор получил фокус

индикатор наведено

Делегат флажка фон

фон отключено

фон нажато

фон получил фокус

фон наведено

индикатор

индикатор отключено

индикатор нажато

индикатор выбрано

индикатор выбрано, нажато

индикатор выбрано, получил фокус

индикатор выбрано, наведено

индикатор получил фокус

индикатор наведено

индикатор частично, выбрано

индикатор частично, выбрано, нажато

индикатор частично, выбрано, получил фокус

индикатор частично, выбрано, наведено

индикатор наведено

Комбо-бокс фон

фон отключено

фон получил фокус

фон наведено

фон нажато

фон открыто

фон редактируется

фон редактируется, получил фокус

фон редактируется, отключено

индикатор

индикатор отключено

индикатор редактируется

индикатор редактируется, отключено

индикатор редактируется, зеркально

индикатор редактируется, зеркально, отключено

выпадающее меню

Кнопка с задержкой фон

фон выключен

фон выключен, выбран

фон получил фокус

фон нажат

фон выбран

фон выбран, получил фокус

фон выбран, наведён курсор

фон наведён курсор

прогресс

прогресс выключен

маска

Поворотный регулятор фон

фон выключен

фон получил фокус

ручка

ручка выключен

ручка получил фокус

ручка получил фокус, нажат

ручка получил фокус, наведён курсор

ручка нажат

ручка наведён курсор

Диалоговое окно фон

наложение

См. сноску 1
наложение модальное

См. сноску 1
Группа кнопок диалогового окна фон

Ящик фон слева

фон справа

фон сверху

фон снизу

наложение

См. сноску 1
наложение модальное

См. сноску 1
Рамка фон

Группа фон

заголовок

Делегат элемента фон

фон выключен

фон нажат

фон получил фокус

фон наведён курсор

фон выделен

Меню фон

Элемент меню фон

фон выделен

стрелка

стрелка зеркальная

стрелка выключен

стрелка зеркальная, выключен

индикатор

индикатор выключен

индикатор нажат

индикатор выбран

индикатор выбран, нажат

индикатор выбран, получил фокус

индикатор выбран, наведён курсор

индикатор получил фокус

индикатор наведён курсор

Разделитель меню разделитель

Страница фон

См. сноску 1
Индикатор страницы делегат

делегат выключен

делегат выключен, текущий

делегат нажат

делегат текущий

Панель фон

Попап фон

См. сноску 1
наложение

См. сноску 1
наложение модальное

Полоса прогресса фон

progress

mask

RadioButton indicator

indicator disabled

indicator pressed

indicator checked

indicator checked, focused

indicator checked, hovered

indicator checked, pressed

indicator focused

indicator hovered

RadioDelegate background

background disabled

background pressed

background focused

background hovered

indicator

indicator disabled

indicator pressed

indicator checked

indicator checked, focused

indicator checked, hovered

indicator checked, pressed

indicator focused

indicator hovered

RangeSlider background vertical

background horizontal

progress vertical

progress vertical, disabled

progress horizontal

progress horizontal, disabled

handle

handle disabled

handle focused

handle focused, hovered

handle focused, pressed

handle hovered

handle pressed

RoundButton background

background disabled

background disabled, checked

background focused

background pressed

background checked

background checked, focused

background checked, hovered

background highlighted

background highlighted, pressed

background highlighted, focused

background highlighted, hovered

background hovered

ScrollBar handle

handle disabled

handle interactive

handle interactive, disabled

handle interactive, pressed

handle interactive, hovered

ScrollIndicator handle

Slider background vertical

background horizontal

progress vertical

progress vertical, disabled

progress horizontal

progress horizontal, disabled

handle

handle disabled

handle focused

handle focused, hovered

handle focused, pressed

handle hovered

handle pressed

SpinBox background

background disabled

фон акцентированный

фон редактируемый

индикатор вверх

индикатор вверх, отключён

индикатор вверх, нажат

индикатор вверх, акцентирован

индикатор вверх, зеркально

индикатор вверх, наведён

индикатор вверх, редактируемый

индикатор вверх, редактируемый, нажат

индикатор вверх, редактируемый, акцентирован

индикатор вверх, редактируемый, зеркально

индикатор вверх, редактируемый, наведён

индикатор вниз

индикатор вниз, отключён

индикатор вниз, нажат

индикатор вниз, акцентирован

индикатор вниз, зеркально

индикатор вниз, наведён

индикатор вниз, редактируемый

индикатор вниз, редактируемый, нажат

индикатор вниз, редактируемый, акцентирован

индикатор вниз, редактируемый, зеркально

индикатор вниз, редактируемый, наведён

SwipeDelegate фон

фон отключён

фон нажат

фон акцентированный

фон наведён

Switch индикатор

индикатор отключён

индикатор нажат

индикатор выбран

индикатор выбран, акцентирован

индикатор выбран, наведён

индикатор выбран, нажат

индикатор акцентирован

индикатор наведён

ручка

ручка отключён

ручка нажат

SwitchDelegate фон

фон отключён

фон нажат

фон акцентирован

фон наведён

индикатор

индикатор отключён

индикатор нажат

индикатор выбран

индикатор выбран, акцентирован

индикатор выбран, наведён

индикатор выбран, нажат

индикатор акцентирован

индикатор наведён

ручка

ручка отключён

TabBar фон

TabButton фон

фон отключён

фон нажат

фон выбран

фон наведён

фон отключён, выбран

TextArea фон

фон отключён

фон акцентирован

TextField фон

фон отключён

фон акцентирован

ToolBar фон

ToolButton фон

фон отключено, выбрано

фон сфокусировано

фон нажато

фон выбрано

фон выбрано, сфокусировано

фон выбрано, наведено

фон наведено

Разделитель инструментов разделитель горизонтальный

разделитель вертикальный

Подсказка фон

1 Изображение 1x1, содержащее один цвет, растянутое для заполнения элемента управления.

Изображения 9-патч

Стиль Imagine использует изображения 9-патч, чтобы дизайнеры могли контролировать, как конкретный элемент реагирует на изменение размера. Вот пример изображения 9-патч, представляющего фон кнопки, а также увеличенная версия (для лучшего просмотра линий 9-патч):

Контент изображения имеет ширину 44 пикселя и высоту 32 пикселя. Каждое изображение 9-патч требует линию толщиной в один пиксель (вместе называемые "линиями 9-патч") вокруг каждой стороны, поэтому фактический размер изображения становится 46 пикселей в ширину и 34 пикселя в высоту. Обратите внимание, что линии 9-патч должны быть толщиной в один пиксель независимо от целевого DPI изображения. Например, линии 9-патч для button-background.9.png и button-background@2x.9.png должны быть толщиной в один пиксель.

Линии 9-патч должны быть черного цвета, а остальные области — прозрачными или белыми:

Растяжимые области

Линии 9-патч по верхнему и левому краям определяют, какие части изображения растягиваются при изменении размера.

Ниже приведены примеры изменения размера изображения 9-патч в полтора раза по различным измерениям:

Обратите внимание, как закругленные углы сохраняют свой первоначальный размер, поскольку они находятся за пределами диапазона линий.

Области отступа

Линии 9-патч по правому и нижнему краям определяют, какое пространство доступно для элемента содержимого элемента управления, что означает, что это также можно рассматривать как управление отступом. Диаграмму, иллюстрирующую отступ, см. в разделе Макет элемента управления.

Ниже приведены дополнительные примеры изменения размера изображения 9-патч, демонстрирующие, как работают линии отступа 9-патч.

contentItem может занимать столько места, сколько ему необходимо, в затененных областях. Если линии отступа отсутствуют, contentItem будет занимать столько места, сколько ему необходимо, без превышения растяжимых областей.

Области вставки

В некоторых случаях для элемента управления необходима тень, например. Однако, если добавить тень к кнопке выше, это повлияет на ее размер, что создает проблемы как для макета, так и для границ ввода мыши/сенсорного экрана.

Области вставки учитывают это, сообщая элементу управления, что определенная область изображения 9-патч должна выходить за пределы элемента управления:

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

Экспорт изображений 9-патч

Различные векторные и растровые редакторы могут использоваться для создания изображений 9-патч, подходящих для использования со стилем Imagine. В следующих разделах кратко описан процесс экспорта для каждого редактора, а в последнем разделе описано, как гарантировать, что экспортированные изображения соответствуют требованиям 9-патч.

Illustrator

См. документацию Adobe по панели экспорта ресурсов.

Inkscape

Для экспорта ресурсов с Inkscape можно использовать расширение Inkscape 9-Patch Export.

Photoshop

См. документацию Adobe по генерации ресурсов изображения из слоев.

Sketch

См. документацию Sketch по экспорту.

Qt Quick Controls также предоставляет плагин для Sketch, который автоматически исправляет толщину линий 9-патч после экспорта ресурсов. Для установки этого файла дважды щелкните по нему. После того, как Sketch подтвердит, что плагин экспорта 9-патч был установлен, плагин автоматически обработает изображения при их экспорте.

Исправление линий 9-патч

При экспорте изображений 9-патч в нескольких вариантах DPI (@2x, @3x, и т. д.), линии 9-патч, как правило, масштабируются вместе с изображением. Существует несколько способов исправить это, но, возможно, самый простой подход — использовать инструмент ImageMagick's mogrify. У инструмента есть функция -shave, которая может использоваться для обрезки изображения для уменьшения толщины линий 9-патч:

mogrify -shave 1x1 -path path/to/images *@2x.9.png
mogrify -shave 2x2 -path path/to/images *@3x.9.png
mogrify -shave 3x3 -path path/to/images *@4x.9.png

Обычные изображения DPI (те, у которых нет префикса @Nx) не затронуты, поэтому необходимо выполнить команду только для изображений, предназначенных для дисплеев с высоким разрешением.

Анимированные изображения

Форматы анимированных изображений WebP и GIF поддерживаются стилем Imagine.

Настройка

Путь

Стиль Imagine позволяет настроить путь к файлам, используемый для выбора ресурсов изображения. Путь может быть указан для любого окна или элемента, и он автоматически распространяется на дочерние элементы, так же как и шрифты. В следующем примере окно и все три радиокнопки отображаются с темными ресурсами изображения (файлы, расположенные в "qrc:/themes/dark").

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Imagine 2.12

ApplicationWindow {
    visible: true

    Imagine.path: "qrc:/themes/dark"

    Column {
        anchors.centerIn: parent

        RadioButton { text: qsTr("Small") }
        RadioButton { text: qsTr("Medium"); checked: true }
        RadioButton { text: qsTr("Large") }
    }
}

Помимо указания пути в QML, его также можно указать с помощью переменной среды или в файле конфигурации. Атрибуты, указанные в QML, имеют приоритет над всеми другими методами.

Файл конфигурации
Переменная Описание
Path Указывает путь к каталогу, содержащему ресурсы стиля Imagine. Если не указано, используются встроенные ресурсы.

Например, чтобы указать путь к каталогу, хранящемуся в системе ресурсов:

[Imagine]
Path=:/imagine-assets

Чтобы указать относительный путь к локальному каталогу:

[Imagine]
Path=imagine-assets

Примечание: Из-за технических ограничений путь не должен называться "imagine", если он относительный к файлу qtquickcontrols2.conf.

Дополнительные сведения о файле конфигурации см. в разделе Файл конфигурации Qt Quick Controls.

Переменные среды
Переменная Описание
QT_QUICK_CONTROLS_IMAGINE_PATH Указывает путь к каталогу, содержащему ресурсы стиля Imagine. Если не указано, используются встроенные ресурсы.

Например, чтобы указать путь к каталогу, хранящемуся в системе ресурсов:

QT_QUICK_CONTROLS_IMAGINE_PATH=:/imagine-assets

Чтобы указать относительный путь к локальному каталогу:

QT_QUICK_CONTROLS_IMAGINE_PATH=imagine-assets

Примечание: Из-за технических ограничений путь не должен называться "imagine", если он относительный к файлу qtquickcontrols2.conf.

Полный список поддерживаемых переменных среды см. в разделе Поддерживаемые переменные среды в Qt Quick Controls.

Цветовая схема

Стиль Imagine поддерживает настройку цветовой схемы через свойство palette и файл qtquickcontrols2.conf. Как и в других стилях, точные роли цветовой схемы, используемые стилем Imagine, зависят от стиля. Однако, поскольку большая часть визуального отображения элементов управления (например, фоны) управляется ресурсами изображений, только роли, обычно используемые для текста, будут иметь эффект.

Шрифт

Пользовательские шрифты можно задать через свойство font и файл конфигурации configuration.

Зависимость

Для доступа к атрибутам, специфичным для стиля Imagine, необходимо отдельно импортировать стиль Imagine. Следует отметить, что независимо от ссылок на стиль Imagine, код приложения работает с любым другим стилем. Атрибуты, специфичные для Imagine, имеют эффект только при запуске приложения со стилем Imagine.

Если стиль Imagine импортирован в файл QML, который всегда загружается, стиль Imagine необходимо развернуть вместе с приложением, чтобы приложение могло работать независимо от того, с каким стилем оно запускается. Используя выбор файлов, можно применять изменения, специфичные для стиля, без создания жёсткой зависимости от стиля.

См. также Стиль Qt Quick Controls

Документация по присоединённому свойству

Imagine.path : строка

Это присоединённое свойство хранит путь к ресурсам изображений...

Button {
    Imagine.path: "qrc:/themes/dark"
}

Связанная информация

  • Стиль 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-imagine.html

Spec-Zone.ru

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