Как использовать Universal.System или Material.System в последней версии Qt 5.8?
Я играю с Qt 5.8 RC и новым атрибутом System, представленным в темах Universal и Material.
Однако при разработке настраиваемого приложения можно выбрать Универсальный или Материал в сочетании с Темным, Светлым или Системным. Как я могу узнать, что система на самом деле является не строкой "System", а "Dark" или "Light"?
Вот что я пытаюсь собрать (settings.qml):
RadioButton {
text: qsTr("Light")
checked: appSettings.theme === "Light"
ButtonGroup.group: modeBG
onClicked: {
appSettings.theme = "Light"
appSettings.background = "white"
appSettings.menuPaneColor = "#eeeeee"
}
}
RadioButton {
text: qsTr("Dark")
checked: appSettings.theme === "Dark"
ButtonGroup.group: modeBG
onClicked: {
appSettings.theme = "Dark"
appSettings.background = "black"
appSettings.menuPaneColor = "#171717"
}
}
RadioButton {
text: qsTr("System theme")
ButtonGroup.group: modeBG
onClicked: {
appSettings.theme = "System"
//appSettings.background = "black"
//appSettings.menuPaneColor = "#171717"
}
}
Очевидно, что следующий код, который раньше работал с "жесткими" значениями, больше не работает (main.qml):
ToolButton {
id: burgerMenu
checkable: appSettings.burgerMenuIsChecked
contentItem: Image {
fillMode: Image.Pad
horizontalAlignment: Image.AlignHCenter
verticalAlignment: Image.AlignVCenter
source: "qrc:/images/" + appSettings.style + "/" + appSettings.theme + "/drawer.png"
}
...
}
Любая идея?
1 ответ
В документации сказано:
При установке темы в Систему выбирается светлая или темная тема в зависимости от цвета системной темы. Тем не менее, при чтении значения свойства темы, это значение не System, а фактическая тема.
Итак, если вы проверите значения Material.theme
а также Universal.theme
оба должны возвращать свои эффективные значения, а не значение, которое вы установили.