Daten aus QSqlQueryModel extrahiern

Alles rund um die Programmierung mit Qt
Antworten
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Daten aus QSqlQueryModel extrahiern

Beitrag von Deever »

Hey Amigos, wie geht's?

Ich habe ein QWidget mit einem QTableView, das Daten aus einem QSqlQueryModel darstellt. Auf dem QWidget hat es ferner ein QPushButton. Dem Tableview wurde SelectionMode=SingleSelection und SelectionBehaviour=SelectRows gesetzt. Jetzt möchte ich bei einem Klick auf den Button alle Daten der Zeile (5 Felder) extrahieren und mit ihnen (konkret typisiert, nicht als QVariant, wie bei model->data()) etwas anstellen. Wie ist das zu erreichen?

Vielen Dank für eure Antworten!
Gruß,
/dev

PS: Ich weiß, daß dies eine Anfängerfrage ist. Allerdings ist mir das MV-Konzept von Qt hier an einzelnen Stellen etwas zu abstrakt.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Die Zeile bekommst du per

Code: Alles auswählen

QModelIndexList QItemSelectionModel::selectedRows ( int column = 0 ) const
. Die Daten wie du schon festgestellt hast mit

Code: Alles auswählen

QVariant QAbstractItemModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const
. Die QVariants die zurückgegeben werden kann man in den gewünschten Datentyp umwandeln.
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Beitrag von Deever »

Vielen Dank für deine rasche Antwort! Leider ist mir nicht klar, was ich da für column übergeben soll? Da immer ganze Zeilen selektiert werden, will ich natürlich auch, daß die Indexes aller "Spalten" Felder zurückgegeben werden. Die QVariants gehen in Ordnung, eine imaginäre andere Lösung wäre vermutlich auch nicht einfacher und eleganter.

Vielen Dank für deine Antwort!
Gruß,
/dev
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du weist doch welche Columns du willst, oder? Nämlich 0 bis 4. Also

Code: Alles auswählen

model->index(row, 0).data();
für die 1. Spalte.
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Beitrag von Deever »

Vielen Dank! Das war's!

Gruß,
/dev
Antworten