Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 三态复选框:拒绝用户将其设置为PartiallyChecked_Qt_Qml_Qtquickcontrols2 - Fatal编程技术网

Qt 三态复选框:拒绝用户将其设置为PartiallyChecked

Qt 三态复选框:拒绝用户将其设置为PartiallyChecked,qt,qml,qtquickcontrols2,Qt,Qml,Qtquickcontrols2,我有三态复选框。我希望能够将其设置为Qt.PartiallyChecked,但我不希望用户能够将其设置为此状态 这是我现在使用的解决方法: CheckBox { checkState: allCheckState tristate: true onClicked: { if (checkState == Qt.PartiallyChecked) checkState = Qt.Checked; } } 有

我有三态复选框。我希望能够将其设置为Qt.PartiallyChecked,但我不希望用户能够将其设置为此状态

这是我现在使用的解决方法:

CheckBox
{
     checkState: allCheckState
     tristate: true
     onClicked: {
          if (checkState == Qt.PartiallyChecked)
               checkState = Qt.Checked;
     }
}
有更好的解决方案吗?

您可以重写该函数。引用文件:

此属性包含一个回调函数,该函数被调用以确定 每当通过交互方式切换复选框时,下一个复选状态为 用户通过触摸、鼠标或键盘进行操作

默认情况下,正常复选框在Qt.Unchecked和Qt.Unchecked之间循环 选中状态,三状态复选框在 Qt.Unchecked、Qt.PartiallyChecked和Qt.Checked状态

nextCheckState回调函数可以覆盖默认值 行为。下面的示例实现了一个三态复选框 根据外部条件,可以显示部分选中状态 条件,但在 由用户交互切换

CheckBox {
    tristate: true
    checkState: allChildrenChecked ? Qt.Checked :
                   anyChildChecked ? Qt.PartiallyChecked : Qt.Unchecked

    nextCheckState: function() {
        if (checkState === Qt.Checked)
            return Qt.Unchecked
        else
            return Qt.Checked
    }
}
QtQuick.Controls 2.4(qt5.11)中引入了此QML属性