我的QML中有Gradient,如下例所示。是否可以定义颜色"#1AD6FD"或"#1D62F0"全球QML?
gradient: Gradient {
GradientStop { position: 0.00; color: "#1AD6FD" }
GradientStop { position: 1.00; color: "#1D62F0" }
}
答案 0 :(得分:1)
您可以在任何QML对象上定义自定义属性。
Rectangle {
id: root
// you can define your on custom properties like this
property color gradientColor1: "#1AD6FD"
property color gradientColor2: "#1D62F0"
}
然后在任何其他有权访问通过id。
定义对象的项目中使用它Item {
gradient: Gradient {
GradientStop { position: 0.00; color: root.gradientColor1 }
GradientStop { position: 1.00; color: root.gradientColor1 }
}
}
如果您想重复使用,也可以全局定义整个渐变。
如果要访问其他QML文件中的属性,有多种方法可以执行此操作。如果您可以访问QML根对象,您也可以从其他文件访问其属性,或者您可以定义一个全局JavaScript库,其中包含一些颜色值常量,但我认为不是整个QML对象(只有纯JS)。
另一种简单的方法是定义一个独立的QML对象,它只包含项目的一些全局属性,并将其包含在你的其他QML文件中,只有一个id来引用它,这可能是最简单的解决方案。
只需定义一个空的QML-Item,其中包含一些属性,如上面的Rectangle示例,并将其包含在您的其他QML文件中
Rectangle {
id: root
// include your custom QML global item (GlobalProperties.qml)
GlobalProperties {
id: globalProperties
}
// then you can use it like before, i.e.
color: globalProperties.gradientColor1 // color prop from your GlobalProperties.qml
}