Bindung Modell Qt TableView
Ich bin sehr neu in der Qt-Programmierung möchte ich die Anzeige von Daten mit Qt TableView, die ich immer aus der XML-Datei.
Ich finde Keine nützliche Anleitung dazu, wie das erstellen von benutzerdefinierten Modell und dann binden Sie es an TableView.
Bitte etwas Hilfe oder wenn jemand einige gute Beispiele bitte teilen.
Dank
InformationsquelleAutor der Frage user525717 | 2012-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem model-view Konzept von Qt ist Recht vielseitig. Alle Modelle Erben von QAbstractItemModel. Mit dieser Klasse können Sie erstellen, die sehr Komplex Daten-layouts (Listen, Bäume, Tabellen usw.) aber der Aufwand für die Implementierung ist im Vergleich ziemlich hoch.
Einer fertigen Klasse wäre
QStandardItemModel
. Sie können ganz einfach erstellen Sie eine Tabelle, Modell, und fügen Sie die Elemente, die Instanzen vonQStandardItem
. Sie können den folgenden code verwenden, um begonnen zu erhalten:Sehen Sie, es ist wirklich einfach zu bedienen. Ein Nachteil ist jedoch, dass Sie zu liefern haben, die Daten über einen
QStandardItem
das wäre eine Verschwendung von Speicher. Nehmen wir beispielsweise an, Sie haben mehrere 100 MB Daten, die Sie anzeigen möchten in einer Ansicht. Als Sie bereits die Daten irgendwo gespeichert, wäre es besser, einfach anzupassen, so dass es kann verwendet werden, in der Ansicht, statt der Schaffung einerQStandardItem
für jede Zelle.Dies ist, wo
QAbstractTableModel
ins Spiel kommt. Das folgende Beispiel erzeugt eine matrixmit 250.000 Einträgen. Anstelle der Schaffung einer
QStandardItem
für jedes element der matrix,wir sub-Klasse
QAbstractTableModel
und implementieren Sie die drei rein virtuelle MethodennumRows()
numColumns()
unddata()
die Rückgabe der Anzahl der Zeilen, Spalten unddie Daten für die Anzeige.
Wie Sie sehen können, das Modell dupliziert nicht irgendwelche Daten, sondern dient nur als adapter. Wenn Sie Sie brauchen noch mehr Flexibilität, können Sie gehen, um
QAbstractItemModel
- und event-Umsetzungdie Erstellung der Modell-Indizes, die von Qt verwendet, um anzugeben, welches Modell die Daten zu Lesen oder zu
schreiben.
InformationsquelleAutor der Antwort Mehrwolf
Willst du ein custom-Modell, weil Sie wollen, dass es in der Lage sein, um aktiv zu Lesen und zu aktualisieren, von einer sich ständig ändernden XML-Quelle?
Wenn nicht, können Sie einfach über jede normale QTableView tutorial und ein QStandardItemModel. Zum Parsen der XML-Datei selbst zu erstellen, und erstellen Sie QStandardItem Objekte, indem Sie Sie in Ihr Modell.
Ein custom-Modell ist eine Möglichkeit zu integrieren, die das Lesen der XML-Datei direkt in das Modell selbst, im Gegensatz zu einer Punkt-basierten Ansatz, wo Sie füllen Sie es nach außen.
InformationsquelleAutor der Antwort jdi
Diese sollten wahrscheinlich erhalten Sie begann, http://doc.qt.io/qt-5/modelview.html
InformationsquelleAutor der Antwort Matthew