Материальный стиль
Материальный стиль основан на рекомендациях Google Material Design. Подробнее...
| Заявление об импорте: | import QtQuick.Controls.Material 2.12 |
| С момента: | Qt 5.7 |
Присоединённые свойства
- accent : цвет
- background : цвет
- elevation : целое число
- foreground : цвет
- primary : цвет
- theme : перечисление
Присоединённые методы
- цвет color(перечисление predefined, перечисление shade)
Подробное описание
Материальный стиль основан на Руководстве Google по Material Design. Он обеспечивает единообразный опыт на различных платформах и размерах устройств.
|
Материальный стиль в светлой теме |
Материальный стиль в тёмной теме |
Чтобы запустить приложение с материальным стилем, см. Использование стилей в Qt Quick Controls.
Примечание: Материальный стиль не является родным стилем Android. Материальный стиль — это реализация стиля Qt Quick Controls на 100% кроссплатформенная, которая следует Руководству Google по Material Design. Стиль работает на любой платформе и выглядит более или менее одинаково везде. Незначительные различия могут возникнуть из-за различий в доступных системных шрифтах и двигателях рендеринга шрифтов.
Настройка
Материальный стиль позволяет настроить пять атрибутов: theme, primary, accent, foreground и background.
Все атрибуты могут быть заданы для любого окна или элемента, и они автоматически передаются потомкам таким же образом, как и шрифты. В следующем примере окно и все три радиокнопки отображаются в тёмной теме с фиолетовым цветом акцента:
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12
ApplicationWindow {
visible: true
Material.theme: Material.Dark
Material.accent: Material.Purple
Column {
anchors.centerIn: parent
RadioButton { text: qsTr("Small") }
RadioButton { text: qsTr("Medium"); checked: true }
RadioButton { text: qsTr("Large") }
}
} |
Помимо задания атрибутов в QML, их также можно задать через переменные среды или в файле конфигурации. Атрибуты, заданные в QML, имеют приоритет над всеми другими методами.
Файл конфигурации
| Переменная | Описание |
|---|---|
Theme |
Устанавливает значение по умолчанию темы Material. Значение может быть одним из доступных тем, например "Dark". |
Variant |
Устанавливает вариант Material. Материал Design имеет два варианта: обычный вариант, предназначенный для сенсорных устройств, и плотный вариант для настольных компьютеров. Плотный вариант использует меньшие размеры для элементов управления и их шрифтов. Значение может быть |
Accent |
Устанавливает значение по умолчанию цвет акцента Material. Значение может быть любым цветом, но рекомендуется использовать один из предварительно определённых цветов Material, например "Teal". |
Primary |
Устанавливает значение по умолчанию основной цвет Material. Значение может быть любым цветом, но рекомендуется использовать один из предварительно определённых цветов Material, например "BlueGrey". |
Foreground |
Устанавливает значение по умолчанию цвет переднего плана Material. Значение может быть любым цветом или одним из предварительно определённых цветов Material, например "Brown". |
Background |
Устанавливает значение по умолчанию цвет фона Material. Значение может быть любым цветом или одним из предварительно определённых цветов Material, например "Grey". |
См. Файл конфигурации Qt Quick Controls для получения более подробной информации о файле конфигурации.
Переменные среды
| Переменная | Описание |
|---|---|
QT_QUICK_CONTROLS_MATERIAL_THEME |
Устанавливает значение по умолчанию темы Material. Значение может быть одним из доступных тем, например "Dark". |
QT_QUICK_CONTROLS_MATERIAL_VARIANT |
Устанавливает вариант Material. Материал Design имеет два варианта: обычный вариант, предназначенный для сенсорных устройств, и плотный вариант для настольных компьютеров. Плотный вариант использует меньшие размеры для элементов управления и их шрифтов. Значение может быть |
QT_QUICK_CONTROLS_MATERIAL_ACCENT |
Устанавливает значение по умолчанию цвет акцента Material. Значение может быть любым цветом, но рекомендуется использовать один из предварительно определённых цветов Material, например "Teal". |
QT_QUICK_CONTROLS_MATERIAL_PRIMARY |
Устанавливает значение по умолчанию основной цвет Material. Значение может быть любым цветом, но рекомендуется использовать один из предварительно определённых цветов Material, например "BlueGrey". |
QT_QUICK_CONTROLS_MATERIAL_FOREGROUND |
Устанавливает значение по умолчанию цвет переднего плана Material. Значение может быть любым цветом или одним из предварительно определённых цветов Material, например "Brown". |
QT_QUICK_CONTROLS_MATERIAL_BACKGROUND |
Устанавливает значение по умолчанию цвет фона Material. Значение может быть любым цветом или одним из предварительно определённых цветов Material, например "Grey". |
См. Поддерживаемые переменные среды в Qt Quick Controls для полного списка поддерживаемых переменных среды.
Зависимость
Материальный стиль необходимо импортировать отдельно, чтобы получить доступ к атрибутам, специфичным для этого стиля. Следует отметить, что независимо от ссылок на материальный стиль, код одного и того же приложения работает с любым другим стилем. Атрибуты, специфичные для материала, оказывают влияние только при запуске приложения с материальным стилем.
Если материальный стиль импортирован в файл QML, который всегда загружается, материальный стиль должен быть развернут с приложением, чтобы приложение могло запускаться независимо от того, с каким стилем оно запущено. С помощью селекторов файлов можно применять изменения, специфичные для стиля, без создания жёсткой зависимости от стиля.
Предварительно определённые цвета Material
Хотя значения primary и accent могут быть любыми цветами, рекомендуется использовать один из предварительно определённых цветов, которые хорошо сочетаются с остальной частью палитры Material Design:
Доступные предварительно определённые цвета:
END_OF_DOCUMENT_MARKER| Константа | Описание |
|---|---|
Material.Red |
#F44336 |
Material.Pink |
#E91E63 (акцент по умолчанию) |
Material.Purple |
#9C27B0 |
Material.DeepPurple |
#673AB7 |
Material.Indigo |
#3F51B5 (основной по умолчанию) |
Material.Blue |
#2196F3 |
Material.LightBlue |
#03A9F4 |
Material.Cyan |
#00BCD4 |
Material.Teal |
#009688 |
Material.Green |
#4CAF50 |
Material.LightGreen |
#8BC34A |
Material.Lime |
#CDDC39 |
Material.Yellow |
#FFEB3B |
Material.Amber |
#FFC107 |
Material.Orange |
#FF9800 |
Material.DeepOrange |
#FF5722 |
Material.Brown |
#795548 |
Material.Grey |
#9E9E9E |
Material.BlueGrey |
#607D8B |
При использовании тёмной темы по умолчанию используются разные оттенки предопределённых цветов:
| Константа | Описание |
|---|---|
Material.Red |
#EF9A9A |
Material.Pink |
#F48FB1 (акцент по умолчанию) |
Material.Purple |
#CE93D8 |
Material.DeepPurple |
#B39DDB |
Material.Indigo |
#9FA8DA (основной по умолчанию) |
Material.Blue |
#90CAF9 |
Material.LightBlue |
#81D4FA |
Material.Cyan |
#80DEEA |
Material.Teal |
#80CBC4 |
Material.Green |
#A5D6A7 |
Material.LightGreen |
#C5E1A5 |
Material.Lime |
#E6EE9C |
Material.Yellow |
#FFF59D |
Material.Amber |
#FFE082 |
Material.Orange |
#FFCC80 |
Material.DeepOrange |
#FFAB91 |
Material.Brown |
#BCAAA4 |
Material.Grey |
#EEEEEE |
Material.BlueGrey |
#B0BEC5 |
Предопределённые оттенки
Существует несколько разных оттенков каждого предопределённого цвета, которые можно передать функции Material.color():
| Константа | Значение |
|---|---|
Material.Shade50 | |
Material.Shade100 | |
Material.Shade200 | |
Material.Shade300 | |
Material.Shade400 | |
Material.Shade500 | |
Material.Shade600 | |
Material.Shade700 | |
Material.Shade800 | |
Material.Shade900 | |
Material.ShadeA100 | |
Material.ShadeA200 | |
Material.ShadeA400 | |
Material.ShadeA700 |
См. также Базовый стиль, Универсальный стиль
Варианты
Стиль Material также поддерживает плотный вариант, где элементы управления, такие как кнопки и делегаты, меньше по высоте и используют меньший размер шрифта. Рекомендуется использовать плотный вариант на настольных платформах, где мышь и клавиатура позволяют более точное и гибкое взаимодействие пользователя.
Чтобы использовать плотный вариант, установите переменную окружения QT_QUICK_CONTROLS_MATERIAL_VARIANT в Dense, или укажите Variant=Dense в файле qtquickcontrols2.conf. Значение по умолчанию в обоих случаях Normal.
Следующие изображения иллюстрируют различия между некоторыми элементами управления при использовании обычного и плотного вариантов:
Обратите внимание, что указанные выше высоты могут варьироваться в зависимости от различий в шрифтах на разных платформах.
Документация прикреплённого свойства
Material.accent : color
Это прикреплённое свойство содержит цвет акцента темы. Свойство может быть прикреплено к любому окну или элементу. Значение передаётся потомкам.
Значение по умолчанию Material.Pink.
В следующем примере цвет акцента выделенной кнопки изменён на Material.Orange:
Button {
text: qsTr("Button")
highlighted: true
Material.accent: Material.Orange
} |
Примечание: Несмотря на то, что акцент может быть любым цветом, рекомендуется использовать один из предопределённых цветов Material, которые разработаны для оптимального сочетания с остальной цветовой палитрой стиля Material.
Material.background : color
Это прикреплённое свойство содержит цвет фона темы. Свойство может быть прикреплено к любому окну или элементу. Значение передаётся потомкам.
Значение по умолчанию зависит от темы (светлая или тёмная).
В следующем примере цвет фона кнопки изменён на Material.Teal:
Button {
text: qsTr("Button")
highlighted: true
Material.background: Material.Teal
} |
Material.elevation : int
Это прикреплённое свойство содержит отступ элемента. Чем выше отступ, тем глубже тень. Свойство может быть прикреплено к любому элементу управления, но не все элементы управления отображают отступ.
Значение по умолчанию зависит от элемента управления.
В следующем примере отступ панели установлен на 6 для достижения внешнего вида повышенной карточки:
Pane {
width: 120
height: 120
Material.elevation: 6
Label {
text: qsTr("I'm a card!")
anchors.centerIn: parent
}
} |
Material.foreground : color
Это прикреплённое свойство содержит цвет переднего плана темы. Свойство может быть прикреплено к любому окну или элементу. Значение передаётся потомкам.
Значение по умолчанию зависит от темы (светлая или тёмная).
В следующем примере цвет переднего плана кнопки установлен на Material.Pink:
Button {
text: qsTr("Button")
Material.foreground: Material.Pink
} |
Material.primary : color
Это прикреплённое свойство содержит основной цвет темы. Свойство может быть прикреплено к любому окну или элементу. Значение передаётся потомкам.
Основной цвет по умолчанию используется как цвет фона ToolBar.
Значение по умолчанию Material.Indigo.
Примечание: Несмотря на то, что основной цвет может быть любым цветом, рекомендуется использовать один из предопределённых цветов Material, которые разработаны для оптимального сочетания с остальной цветовой палитрой стиля Material.
Material.theme : перечисление
Это прикреплённое свойство указывает, является ли тема светлой или тёмной. Свойство может быть прикреплено к любому окну или элементу. Значение передаётся потомкам.
Доступные темы:
| Константа | Описание |
|---|---|
Material.Light |
Светлая тема (по умолчанию) |
Material.Dark |
Тёмная тема |
Material.System |
Система темы |
Установка темы на System выбирает светлую или тёмную тему в зависимости от цветов системы темы. Однако при чтении значения свойства темы значение никогда не равно System, а равно фактической теме.
В следующем примере тема для обеих панелей и кнопки установлена на Material.Dark:
Pane {
Material.theme: Material.Dark
Button {
text: qsTr("Button")
}
} |
Attached Method Documentation
color color(enumeration predefined, enumeration shade)
Этот присоединённый метод возвращает эффективное значение цвета указанного предварительно определённого цвета Material, комбинированного с заданным оттенком. Если аргумент оттенка опущен, он по умолчанию равен Material.Shade500.
Rectangle {
color: Material.color(Material.Red)
} Связанная информация
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtquickcontrols2-material.html