Spec-Zone.ru › Qt

Материальный стиль

Материальный стиль основан на рекомендациях 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 имеет два варианта: обычный вариант, предназначенный для сенсорных устройств, и плотный вариант для настольных компьютеров. Плотный вариант использует меньшие размеры для элементов управления и их шрифтов.

Значение может быть "Normal" или "Dense".

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 имеет два варианта: обычный вариант, предназначенный для сенсорных устройств, и плотный вариант для настольных компьютеров. Плотный вариант использует меньшие размеры для элементов управления и их шрифтов.

Значение может быть "Normal" или "Dense".

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)
}

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

  • Стиль Qt Quick Controls

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

Spec-Zone.ru

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