下面我创建一个ListView,其中包含一个CheckBox,其checked
属性绑定到模型的checked
角色.单击委托时,我想通过更改模型的checked
属性来切换CheckBox状态.但之间的结合checkBox.checked
和model.checked
工程仅在第一次用户点击该委托.之后,checkBox
始终检查,与model.checked
值无关.结果是用户无法取消选中该复选框,我不希望这样.
import QtQuick 2.2 import QtQuick.Controls 1.1 ListView { id: listView height: 100 width: 100 model: ListModel { ListElement { checked: false } ListElement { checked: false } } delegate: Rectangle { width: listView.width implicitHeight: checkBox.implicitHeight * 1.3 CheckBox { id: checkBox anchors.fill: parent text: index + 1 checked: model.checked } MouseArea { id: mouseArea anchors.fill: parent onClicked: { var item = listView.model.get(index); console.log('old model.checked:', model.checked); item.checked = !item.checked; console.log('new model.checked:', model.checked); console.log('checkBox.checked:', checkBox.checked); console.log('something went wrong:', model.checked !== checkBox.checked); } } } }
我的代码中的问题在哪里?如何使委托像普通的CheckBox一样工作?