Spec-Zone.ru › Qt 5.15

Стиль 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-патч, представляющего кнопку's фон, вместе с увеличенным вариантом (чтобы было проще увидеть линии 9-патч):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Illustrator

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

Inkscape

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

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 и конфигурационный файл.

Зависимость

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

Spec-Zone.ru

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