4
下面我創建一個帶委託的ListView,其中包含一個CheckBox,其checked
屬性綁定到該模型的checked
角色。單擊代理時,我想通過更改模型的checked
屬性來切換複選框狀態。但checkBox.checked
和model.checked
之間的綁定僅在用戶第一次單擊該代理時才起作用。之後,總是檢查checkBox
,與model.checked
值無關。結果是用戶不能取消選中複選框,我不想要這個。更改QML ListView的模型不會更改相應的代理
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?
你說得對,我能再現一個最小項目的bug沒有任何型號:https://gist.github.com/webmaster128/7979803 –