问题描述: 我有一个简单的CheckBox-0....9列表,其中外面有一个全选CheckBox-A标志。设置property var之后,可以在点击CheckBox-A的时候全选/取消CheckBox-0..9这是没有问题的,但是点击选中/取消CheckBox-0..9任一之后,再次点击CheckBox-A,当前点击项会失效问题。
问题原因:当手动点击该复选框时,checked属性将被重新分配为硬编码的true,而不是自定义的porperty var了;同样手动取消checked属性被置为false; 修复该问题可以使用Qt.binding简单的重新绑定已检查的属性;
测试代码如下:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
default property bool myChecked: false;
Text {
id: text1
x: 172
y: 69
width: 218
height: 53
text: qsTr("Text")
font.bold: true
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 12
}
CheckBox {
id: id
x: 246
y: 161
text: qsTr("Breakfast")
function isChecked() {
return myChecked;
}
checked: isChecked()
onClicked: {
myChecked = !myChecked;
checked = Qt.binding(isChecked);
}
onCheckedChanged: {
console.log("onCheckedChanged:"+checked);
}
}
Button {
id: button
x: 246
y: 250
text: qsTr("Button")
onClicked: {
myChecked = !myChecked;
}
}
}