如何为 QML 创建一个动态的全局主题?
Posted
技术标签:
【中文标题】如何为 QML 创建一个动态的全局主题?【英文标题】:How to create a dynamic global theme for QML? 【发布时间】:2018-09-18 13:52:50 【问题描述】:这篇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 目前的工作方式是否可能出现这种情况?
【问题讨论】:
【参考方案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
,它将更改对象,激活信号/插槽并更改整个应用程序。
【讨论】:
以上是关于如何为 QML 创建一个动态的全局主题?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 iPhone 应用程序创建多个主题/皮肤? [关闭]