ModelView programmieren

Alles rund um die Programmierung mit Qt
Antworten
GBunge
Beiträge: 30
Registriert: 26. Mai 2008 12:12

ModelView programmieren

Beitrag von GBunge »

Hallo,
für eine größere Menge Daten ( Megabytes ) möchte ich zwei unterschiedliche Tabellen anlegen.
Die erste Tabelle enthält die Rohdaten, die zweite Tabelle soll die dekodierte Version der Rohdaten enthalten.
Wenn ich in der ersten Tabelle ein Item auswähle, dann soll auch in der zweiten Tabelle die dekodierte
Version ausgewählt werden.
Es bietet sich ein 'QAbstractItemModel' und ein 'QItemSelectionModel' mit zwei 'QTableView' an.

Die Qt-Beispiele 'interview' und 'charts' habe ich studiert und versucht, bis ins Detail zu verstehen.
( nicht ganz so einfach! aber immerhin )
Die sehr gute HTML-Datei 'modelview.html' des Qt-Projects mit dem Titel 'Model/View Tutorial' geht leider
nicht auf mein Problem ein.

Das Problem:
Durch Verwendung eines Models werden in beiden Tabellen die Rohdaten identisch angezeigt eventuell verziehrt
durch eine DecorationRole.
Benutze ich für jede Tabelle ein eigenes DatenModel, kann ich die unterschiedlichen Daten darstellen,
aber dann haut es mit der Auswahl der Daten nicht mehr hin.

Gibt es eine Möglichkeit, aus der Funktion 'Model::data(...)' die beiden Tabellen unterschiedlich mit Daten zu versorgen?
( möglicherweise mit 'UserRole' ? )

Gruß GBunge
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: ModelView programmieren

Beitrag von archer »

Du könntest dir ein Delegate (QStyledItemDelegate) für das Zweite View schreiben, das die Rohdaten
umrechnet und darstellt.
GBunge
Beiträge: 30
Registriert: 26. Mai 2008 12:12

Re: ModelView programmieren

Beitrag von GBunge »

Hallo archer,
danke für den Tip. Werde es mal versuchen.
Bin mir nur nicht sicher, ob das QStyledItemDelegate nicht auf beide
Views Auswirkung hat, weil es ja mit dem gleichen Model verbunden ist.
Gruß GBunge
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: ModelView programmieren

Beitrag von archer »

Das Delegate setzt du in das View, nicht in das Model.
Daher hat es keine direkte Auswirkung auf das andere View.
Antworten