Mon ListView n'affiche pas les nouvelles entrées dans mon modèle lorsqu'elles sont ajoutées.ListView ne s'actualise pas lorsque le modèle de tableau de chaînes change
Lorsqu'une boîte de dialogue s'ouvre, je copie une QStringList d'un élément C++ dans une propriété Qml. L'utilisateur modifie ensuite le tableau à l'aide des contrôles fournis (ajouter, modifier, supprimer).
Malheureusement, le ListView ne se met pas à jour lorsque je modifie la propriété. La propriété est modifiée correctement (comme vu par la sortie de débogage).
Comment puis-je mettre à jour ListView automatiquement en utilisant la liaison de données?
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
property var things
Component.onCompleted: things = [] // normally retrieved from C++ QStringList
ColumnLayout {
anchors.fill: parent
RowLayout {
Layout.fillWidth: true
TextField {
Layout.fillWidth: true
id: theTextField
}
Button {
Layout.fillWidth: true
text: qsTr("Append")
onPressed: {
things.push(theTextField.text)
console.log(things)
}
}
Button {
Layout.fillWidth: true
text: qsTr("Remove")
onPressed: {
var index = things.indexOf(theTextField.text)
if(index == -1)
console.warn('Not found!')
else
things.splice(index, 1)
console.log(things)
}
}
Button {
Layout.fillWidth: true
text: qsTr("Clear");
onPressed: {
things = [];
console.log(things)
}
}
}
ListView {
id: listView
Layout.fillWidth: true
Layout.fillHeight: true
model: things
delegate: Label {
text: modelData
}
}
}
}