Spec-Zone.ru › Qt 5.12

Стиль Imagine

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

Заявление импорта: import QtQuick.Controls.Imagine 2.12
С момента: Qt 5.10

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

  • путь : строка

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

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

Стиль Imagine с изображениями по умолчанию

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

Имена файлов

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

<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-панели.

Photoshop

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

Sketch

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

Qt Quick Controls 2 также предоставляет плагин для 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) не затронуты, поэтому выполнять команду необходимо только для изображений, предназначенных для дисплеев с высоким DPI.

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

Стиль Imagine поддерживает анимированные форматы изображений WebP и GIF.

Настройка

Путь

Стиль 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 2 для получения более подробной информации о конфигурационном файле.

Переменные среды
Переменная Описание
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 2 для полного списка поддерживаемых переменных среды.

Цветовая палитра

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

Шрифт

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

Зависимость

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

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

См. также Настройка Qt Quick Controls 2

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

Imagine.path : строка

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

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

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

  • Стиль Qt Quick Controls 2
  • Пример автомобильной темы
  • Пример музыкального плеера

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

Spec-Zone.ru

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