我在Column
中有一组按钮,我已设置autoExclusive : true
。现在只能按预期检查一个按钮。但是,如果我点击已经检查过的按钮,如何禁用已检查状态?以下是代码:
Column {
id: column
Button {
checked: true
text: qsTr("button 1")
autoExclusive : true
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
Button {
checked: true
text: qsTr("button 2")
autoExclusive : true
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
Button {
checked: true
text: qsTr("button 3")
autoExclusive : true
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
}
答案 0 :(得分:1)
有一种方法可以使用ButtonGroup:
来完成此操作Column {
id: column
Button {
checked: true
text: qsTr("button 1")
ButtonGroup.group: btnGrp //assign buttongroup
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
Button {
checked: true
text: qsTr("button 2")
ButtonGroup.group: btnGrp //assign buttongroup
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
Button {
checked: true
text: qsTr("button 3")
ButtonGroup.group: btnGrp //assign buttongroup
checkable : true
background: Rectangle {
color:checked ? "red" : "white"
}
}
}
ButtonGroup {
id:btnGroup
}
现在循环浏览btnGrp.buttons
,可以将按钮状态检查为true或false,也可以通过访问btnGrp.checkedButton
来获取选中按钮。
答案 1 :(得分:0)
我怀疑它会起作用。
Item {
id: column
Button {
id: btn1
checked: true
text: qsTr("button 1")
onClicked:
{
if (checked)
{
Console.log("Checked")
checked = false
}
else
{
Console.log("disabled")
checked = true
}
}
}
}
答案 2 :(得分:0)
color: button2.checked ? "red" : "white"