Kam*_*pov 2 qt qml qtquick2 qtquickcontrols2
我需要制作AbstractButton应该是独占的可检查列表,但默认情况下我无法取消选中未选中任何按钮的已选中按钮。
现在我必须做这样的事情来模仿这样的逻辑:
Item {
AbstractButton {
id: oneButton
checkable: true
onCheckedChanged: {
if(checked) {
if(twoButton.checked || threeButton.checked || ...) {
twoButton.checked = threeButton.checked = ... = false
}
}
}
}
AbstractButton {
id: twoButton
checkable: true
onCheckedChanged: {
if(checked) {
if(oneButton.checked || threeButton.checked || ...) {
oneButton.checked = threeButton.checked = ... = false
}
}
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
这很丑陋,如果能找到更好的解决方案那就太好了。
您可以通过强制在发布时取消选中来拥有不可选中的独占按钮:
Button {
checkable: true
autoExclusive: true
property bool wasChecked
onPressed: wasChecked = checked
onReleased: {
if (wasChecked) {
checked = false;
toggled(); // emit the toggled signal manually, since we changed the checked value programmatically but it still originated as an user interaction.
}
}
}
Run Code Online (Sandbox Code Playgroud)