当按钮在 Qt Quick Controls 2 中独占时取消选中按钮

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)

这很丑陋,如果能找到更好的解决方案那就太好了。

Gre*_*cKo 5

您可以通过强制在发布时取消选中来拥有不可选中的独占按钮:

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)