我正在使用 Qt 5.4.1。
我目前正在 QML 中设置一些按钮。我希望某些按钮具有类似的状态行为 - 如何避免通过 QML 重复大量非常相似的代码?
Rectangle {
id: songFilterButton
x: 0; width: 80
y: 0; height: 60
Text {
anchors.centerIn: parent
text: "Songs"
}
state: "on"; states: [
State {
name: "on"
PropertyChanges{ target: songFilterButton; color: "steelblue" }
},
State {
name: "on"
PropertyChanges{ target: songFilterButton; color: "white" }
}
]
MouseArea { id: region; anchors.fill: parent; onClicked: songFilterButton.toggle() }
function toggle() {
if(state == "on") { state = "off" } else { state = "on" }
}
}
对于几个按钮重复这将是相当多的代码,并且每次我添加到按钮功能(例如向 C++ 和其他行为发送信号)时,我都必须执行多次......
我已阅读 MrEricSir 提供的链接,并使用以下代码创建了 HKRadioButton.qml:
import QtQuick 2.0
Rectangle {
property string text: label.text
Text {
id: label
anchors.centerIn: parent
}
state: "on"; states: [
State {
name: "on"
PropertyChanges{ target: songFilterButton; color: "steelblue" }
},
State {
name: "off"
PropertyChanges{ target: songFilterButton; color: "white" }
}
]
MouseArea { anchors.fill: parent; onClicked: parent.toggle() }
function toggle() {
if(state == "on") { state = "off" } else { state = "on" }
}
}
在我的主要 QML 文件中,我有
HKRadioButton {
id: songFilterButton
x: 0; width: 80
y: 0; height: 60
text: "Songs"
}
我得到了行为(改变状态),但没有得到文本......