这篇文章declare global property in QML for other QML files很好地展示了如何创建全局主题,但是您将如何创建一个可以由用户轻松切换的主题?我想您可能需要一些全局信号来告诉组件更改的值,但是该值已经在对象中隐含了吗?
例如,我想做的是拥有一种看起来像这样的样式:
pragma Singleton
import QtQuick 2.2
var boolean darkTheme = true;
function employDarkTheme() {
darkTheme = true;
}
function employLightTheme() {
darkTheme = false;
}
QtObject {
property QtObject font: QtObject {
property QtObject pointSize: QtObject {
property int menu: 10
property int normal: 12
property int subTitle: 18
property int title: 24
}
property QtObject color: QtObject {
property color primary: darkTheme ? "black" : "white"
property color secondary: darkTheme ? "white" : "black"
}
}
property QtObject background: QtObject {
property QtObject color: QtObject {
property color primary: darkTheme ? "#333333" : "white"
property color secondary: darkTheme ? "white" : "#333333"
}
}
}
QML当前的工作方式是否可能发生这种情况?
答案 0 :(得分:1)
玩了一点之后,实际上是有可能而且很容易做到的。如果使用以下代码代替以前的代码,则使用:
pragma Singleton
import QtQuick 2.2
QtObject {
property var darkTheme: true
property QtObject font: QtObject {
property QtObject pointSize: QtObject {
property int menu: 10
property int normal: 12
property int subTitle: 18
property int title: 24
}
property QtObject color: QtObject {
property color primary: darkTheme ? "black" : "white"
property color secondary: darkTheme ? "white" : "black"
}
}
property QtObject background: QtObject {
property QtObject color: QtObject {
property color primary: darkTheme ? "#333333" : "white"
property color secondary: darkTheme ? "white" : "#333333"
}
}
}
并随时更改darkTheme
,它将更改对象,激活信号/插槽并更改整个应用程序。