我在 ExclusiveGroup 中有三个按钮:

ExclusiveGroup {id: group}
Button{
    checkable: true
    exclusiveGroup: group
}
Button{
    checkable: true
    exclusiveGroup: group
}
Button{
    checkable: true
    exclusiveGroup: group
}

在我单击其中任何一个之前,它们显然都未选中,但是一旦选中其中一个,我该如何取消选中它们?我真的需要添加另一个按钮,一旦选中,就会产生在没有选中任何其他按钮时应用的行为吗?

最佳答案

您可以利用 current ExclusiveGroup 属性:



因此,方法是在需要时通过将 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
            }
        }
    }
}

关于qt - QML 取消选中 ExclusiveGroup 中的选中按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29139634/

10-13 08:00