我有三个按钮位于ExclusiveGroup
:
ExclusiveGroup {id: group}
Button{
checkable: true
exclusiveGroup: group
}
Button{
checkable: true
exclusiveGroup: group
}
Button{
checkable: true
exclusiveGroup: group
}
在点击其中任何一个之前,它们显然都是未经检查的,但是一旦选中其中一个,我怎么能取消选中它们?我是否真的需要添加另一个按钮,一旦选中,会产生在没有其他按钮被选中时应用的行为?
答案 0 :(得分:2)
您可以利用ExclusiveGroup
的{{3}}属性:
当前选定的对象。默认为绑定到ExclusiveGroup的第一个已检查对象。 如果有无,则默认为null 。
因此,无论何时需要,都可以通过将current
属性设置为null
来取消选中当前按钮。
在下面的例子中,我正在删除检查状态,这显然更像是一个练习而不是真实的用例。但无论如何,它都能掌握这种方法:
import QtQuick 2.4
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
ApplicationWindow {
id: window
visible: true
width: 100
height: 200
ColumnLayout {
anchors.centerIn: parent
Button{
id: but1
checkable: true
exclusiveGroup: group
}
Button{
id: but2
checkable: true
exclusiveGroup: group
}
Button{
id: but3
checkable: true
exclusiveGroup: group
}
}
ExclusiveGroup {
id: group
onCurrentChanged: {
if(current != null) {
console.info("button checked...no!")
current = null
//current.checked = false <--- also this
}
}
}
}