Frage

Ich habe ein 2D-Modell, wobei jede Zeile einen Rahmen in einem Video darstellt, und jede Spalte ein Objekt darstellt. Das Objekt kann auf jedem Frame unterschiedliche Zustände hat, und dies wird im Modell gespeichert. Dann habe ich eine QTableView, die diese Daten zeigt. Das Modell hat die Datenkopfzeile, so dass jede Reihe hat einen Header wie „Rahmen k“ und jede Spalte hat einen Header wie „Objekt n“. Diese Tabelle ist editierbar. Aber ich möchte, dass die Benutzer es eine andere Art und Weise zu bearbeiten. Der andere Weg ist eine Grafikansicht, die einen einzelnen Frame zeigt. Unterhalb der Grafik-Ansicht ist eine Liste (horizontal ausgerichtet), die jeden Rahmen darstellt. Auf diese Weise der Benutzer auf einem Rahmen in der Liste und die Grafikansicht klicken kann, zeigt nun diesen Rahmen.

Das Problem ist, dass die Liste zeigt die erste Spalte jeder Zeile in dem Modell. Was ich will, anstatt den Kopf jeder Zeile zu tun, zu zeigen, ist (so sagt die Liste „Rahmen 1, Rahmen 2, etc“). Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Zwei mögliche Lösungen:

  1. Versuchen Sie, einen Proxy-Modell (eine Unterklasse von QAbstractProxyModel) zu verwenden, die Zeilenköpfe als Spalten in einer einzigen Zeile zugreift. Nicht trivial, da die Proxy-Modell zeigt, wie Daten, was das ursprüngliche Modell Header betrachtet.

  2. Anzeigen eine zweite 2D-Ansicht des Modells, aber alles außer für die Spaltenüberschriften verbergen. Da Ihre Frames Zeilen sind, werden Sie ein Proxy-Modell müssen zwischen Zeilen und Spalten transponieren.

HAFTUNGSAUSSCHLUSS: Ich habe eigentlich keine der Lösungen implementieren

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top