在QML中设置Button的Checked属性

时间:2017-09-05 15:54:31

标签: qt qml qtquick2

我在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"
        }
    }
}

3 个答案:

答案 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"