Стиль Material
Стиль Material основан на рекомендациях Google Material Design. Подробнее...
| Заявление импорта: | import QtQuick.Controls.Material 2.12 |
| С момента: | Qt 5.7 |
Присоединённые свойства
- accent : цвет
- background : цвет
- elevation : целое число
- foreground : цвет
- primary : цвет
- theme : перечисление
Присоединённые методы
- цвет color(перечисление predefined, перечисление shade)
Подробное описание
Стиль Material основан на Рекомендациях Google Material Design. Он обеспечивает унифицированный опыт на разных платформах и размерах устройств.
|
Стиль Material в светлой теме |
Стиль Material в тёмной теме |
Чтобы запустить приложение со стилем Material, см. Использование стилей в Qt Quick Controls.
Примечание: Стиль Material не является родным стилем Android. Стиль Material — это реализация стиля Qt Quick Controls на 100% кроссплатформенная, которая следует рекомендациям Google Material Design. Стиль работает на любой платформе и выглядит более или менее одинаково везде. Незначительные различия могут возникнуть из-за различий в доступных системных шрифтах и движках рендеринга шрифтов.
Настройка
Стиль Material позволяет настраивать пять атрибутов: 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. 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. 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 для получения полного списка поддерживаемых переменных среды.
Зависимость
Стиль Material необходимо импортировать отдельно, чтобы получить доступ к атрибутам, специфичным для стиля Material. Следует отметить, что независимо от ссылок на стиль Material, один и тот же код приложения работает с любым другим стилем. Атрибуты, специфичные для Material, действуют только при запуске приложения со стилем Material.
Если стиль Material импортирован в файле QML, который всегда загружается, стиль Material необходимо развернуть вместе с приложением, чтобы приложение можно было запустить независимо от того, каким стилем оно запускается. Используя выбор файлов, можно применять специфические для стиля изменения без создания жёсткой зависимости от стиля.
Предопределённые цвета Material
Хотя primary и accent могут быть любым цветом, рекомендуется использовать один из предопределённых цветов, которые хорошо работают с остальной палитрой стиля Material:
Доступные предопределённые цвета:
| Константа | Описание |
|---|---|
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 : цвет
Это прикреплённое свойство содержит цвет акцента темы. Свойство может быть прикреплено к любому окну или элементу. Значение распространяется на дочерние элементы.
Значение по умолчанию — Material.Pink.
В следующем примере цвет акцента выделенной кнопки изменён на Material.Orange:
Button {
text: qsTr("Button")
highlighted: true
Material.accent: Material.Orange
} |
Примечание: Несмотря на то, что акцент может быть любым цветом, рекомендуется использовать один из предопределённых цветов Material, которые были разработаны для работы с остальной частью цветовой палитры стиля Material.
Material.background : цвет
Это прикреплённое свойство содержит цвет фона темы. Свойство может быть прикреплено к любому окну или элементу. Значение распространяется на дочерние элементы.
Значение по умолчанию зависит от темы (светлая или тёмная).
В следующем примере цвет фона кнопки изменён на Material.Teal:
Button {
text: qsTr("Button")
highlighted: true
Material.background: Material.Teal
} |
Material.elevation : целое число
Это прикреплённое свойство содержит высоту подъёма элемента управления. Чем выше высота, тем глубже тень. Свойство может быть прикреплено к любому элементу управления, но не все элементы управления визуализируют высоту подъёма.
Значение по умолчанию зависит от элемента управления.
В следующем примере высота подъёма панели установлена в 6 для достижения внешнего вида карты с подъёмом:
Pane {
width: 120
height: 120
Material.elevation: 6
Label {
text: qsTr("I'm a card!")
anchors.centerIn: parent
}
} |
Material.foreground : цвет
Это прикреплённое свойство содержит цвет переднего плана темы. Свойство может быть прикреплено к любому окну или элементу. Значение распространяется на дочерние элементы.
Значение по умолчанию зависит от темы (светлая или тёмная).
В следующем примере цвет переднего плана кнопки установлен в Material.Pink:
Button {
text: qsTr("Button")
Material.foreground: Material.Pink
} |
Material.primary : цвет
Это прикреплённое свойство содержит основной цвет темы. Свойство может быть прикреплено к любому окну или элементу. Значение распространяется на дочерние элементы.
Основной цвет используется в качестве цвета фона 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")
}
} |
Документация по методам-привязкам
цвет цвет(перечисление предварительно_определенный, перечисление оттенок)
Этот метод-привязка возвращает эффективное значение цвета указанного предварительно определённого цвета 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-5.15/qtquickcontrols2-material.html