Hallo zusammen,
eines vorweg, ich habe schon einiges gelesen, aber ich glaube ich bin einfach zu blöd...
Ich möchte ein QTableView, der ein QSqlQueryModel enthält sortieren. Ich habe auch schon nachgelesen, dass ich QSortFilterProxyModel verwenden muss.
Jetzt lässt sich der View auch sortieren. Das Problem ist aber, dass bei einem doubleclick der Index nicht mehr stimmt.
Dafür soll die Lösung des Problems sein, eine eigene QSortFilterProxyModel Klasse zu erzeugen. Und hier sollen dann diese beiden Methoden überschrieben werden:
- mapFromSource
- mapToSource
Aber nun stehe ich vor dem Problem, dass ich absolut nicht weiß, was in die beiden Methoden gehört und wie das funktioniert.
Ich kann doch nicht der erste sein, der dieses Problem hat.
Das scheint anscheinend gar nicht so schwer zu sein. In allen Foren stoße ich am ende eines Threads zu diesem Thema immer auf den Kommentar:
"Habe die beiden Methoden überschrieben, jetzt läufts"
Eigentlich will ich nur den Inhalt aus der ersten versteckten Spalte haben (das ist der Primärschlüssel der Tabelle). Wenn ich nach einem Doppelklick auf die Zeile diesen Wert hätte, würde es mir ja schon reichen.
Ich hoffe, das mir jemand helfen kann,
ich komme nämlich einfach nicht weiter.
Gruß,
Grisu
QTableView mit QSqlQueryModel Sortieren
1. Warum sollte dann der Index nicht mehr stimmen?
Code: Alles auswählen
connect(ui.tvBooks, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(selectBook(const QModelIndex&)));
void MasterOfBooks::selectBook(const QModelIndex& model){
int row = model.row();
record = m_sqlBuchModell->record(row);
int id = record.value(DBID::buecher_id).toInt();
...
}
Ich muss also irgendwie den Index anpassen....
Das ist auf alle Fälle ein Möglichkeit, an die ich noch nicht gedacht habe. Allerdings muss ich dann für jedes sort,einen neuen Select machen und zusätzlich muss ich auch noch was basteln, damit ich auf die Signals des QHeaderViews reagieren kann.2. Du könntest auch über die SQL-Query selbst sortieren.
Auf alle Fälle eine Option, aber ich würde wirklich gerne verstehen, wie das mit dem QSortFilterProxyModel funktioniert.
Hi,
ich glaube ich stehe auf dem Schlauch. Ich hatte auch schon gedacht, das ich weiterhin mit dem ProxyModel arbeiten muss und nicht mit dem QSqlQueryModel, aber dem ProxyModel fehelt die Methode record. Ich komme also über den Proxy nicht an den wert.
Und die Funktionen mapTo/FromSource kann ich nicht verwenden, weil die beim Proxymodell Virtuell sind.
Gibt es noch was anderes als das QSortFilterProxyModel?
Gruß und frohe Ostern,
Grisu
ich glaube ich stehe auf dem Schlauch. Ich hatte auch schon gedacht, das ich weiterhin mit dem ProxyModel arbeiten muss und nicht mit dem QSqlQueryModel, aber dem ProxyModel fehelt die Methode record. Ich komme also über den Proxy nicht an den wert.
Und die Funktionen mapTo/FromSource kann ich nicht verwenden, weil die beim Proxymodell Virtuell sind.
Gibt es noch was anderes als das QSortFilterProxyModel?
Gruß und frohe Ostern,
Grisu