Qt Dokumentation scheint ein bisschen kurz in Bezug auf das Problem, aber ich versuche, QLists als Modelle für eine ListView zu verwenden. Die Sache ist, ich repräsentiere eine Hierarchie und jedes Mal, wenn ein Element angeklickt wird, wird das Modell mit einem anderen ausgetauscht, das QML von einem C++ - Callback erhält.QML ListView mit QList <QObject*> als Modell
Dies ist das Objekt ein Listenelement darstellt:
class MyObject : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ getName WRITE setName)
Q_PROPERTY(QString subtitle READ getSubtitle)
Q_PROPERTY(QList<QObject*> descent READ getChildren NOTIFY childrenUpdated)
...
}
Und wie ich es in QML verwenden:
ListView {
id: list_view
model: myModel
anchors.fill: parent
delegate: Item {
id: row
height: 50
anchors.left: parent.left
anchors.right: parent.right
MouseArea {
anchors.fill: row
onClicked: {
list_view.model = descent;
}
}
Column {
Text { text: name }
Text { text: subtitle }
}
}
}
Die "MyModel" -Modell in der Hauptsache, wie dies festgelegt ist:
context->setContextProperty("myModel", QVariant::fromValue(folder.getChildren()));
Das erste Mal, dass ListView angezeigt wird, verwendet es myModel als Modell, und es funktioniert. Immer wenn ich auf ein Element klicke, erstellt das ListView jedoch die genaue Anzahl der erwarteten Elemente ... aber es kann keine seiner Eigenschaften lesen!
Wie kommt es, dass ListView genau weiß, wie viele Elemente es erstellen muss, aber seine Eigenschaften nicht sehen kann?
Ich habe von dem QAbstractItemModel gehört und wollte das nicht tun: Da ich mit einfachen Daten arbeite (nur QString), werde ich in 'anständig' schauen! Vielen Dank! – Michael