我有一个名为Theme1.js的文件,其中包含与主题1样式相关的属性变量。类似地,我也有Theme2.js文件。
现在,在main.qml中,如果我点击MouseArea,则主题应在主题1和主题2之间切换。我发现QML中不存在条件导入语句。还有其他方法吗?
var color="red";
var textString="This is Theme1"
Theme2.js
var color="green";
var textString="This is Theme2"
main.qml
import QtQuick 2.3
import QtQuick.Window 2.2
import "Theme1.js" as Theme //default Theme
Window {
visible: true
color:Theme.color
MouseArea {
anchors.fill: parent
onClicked: {
//Change Theme 1 to Theme 2. Basically Toggle Theme here
}
}
Text {
text: Theme.textString
anchors.centerIn: parent
}
}
Style
中内联Them1/2
声明,或者使用动态实例化来减少内存消耗。但是为了减少隐式类的数量,我认为拥有一个共同的Theme
基类并从中继承具体的Theme
是有益的。进一步地,拥有这个共同的基类可以确保所有的样式都有相同的属性,你不容易出现拼写错误,可以启用QtCreator的代码完成等等... - derM.current.
。 - m7913d