[solved] Wie komme ich über selectionModel an die Daten?
-
Hallo,
dies ist mein erster Beitrag hier, ich hoffe ihr könnt mir ein wenig helfen.
Im Prinzip habe ich mich anhand des Model/View Tutorials (danke dafür!) in meinem eigenen Projekt nach vorne gehangelt und zwei TableViews in meiner GUI untergebracht. Das erste TableView funktioniert wunderbar und macht exakt das, was ich will.
Beim zweiten stoße ich aber an meine Grenzen und bin jetzt seit zwei Tagen circa am verzweifeln.Long story short: Ich will im TableView mehrere Zeilen anklicken und die Werte von der ersten Spalte (1) bei einem Button_clicked in ein Array schreiben.
@QItemSelectionModel objectList = ui->tableView_2->selectionModel();@
@QModelIndexList indexes = objectList->selectedRows(1);@über
@indexes.size();@
bekomme ich die Anzahl der Zeilen, die ausgewählt wurden.
Im Prinzip muss ich jetzt nur noch eine Methode haben, mit der ich in einer Schleife die einzelnen Werte aus Spalte 1 in das Array schreiben kann...und genau da hänge ich!
Der Debugger ist mir leider keine große Hilfe. Der crasht permanent, wenn ich versuche die Inhalte von QModelIndexList und QItemSelectionModel anzeigen zu lassen.//offtopic:
Im ersten TableView habe ich für etwas Ähnliches eine eigene private Funktion "getSerialNumber" geschrieben, mit der ich dann über:
@m_model->getSerialNumber(ui->tableView->model()->index(currentRow.row(),0).data().toString());@
aus dem Model die passende Serialnumber zur ausgewählten Spalte als String zurückbekomme, die nur im Model, aber nicht im View vorhanden ist. Da war's entsprechend einfach, weil immer nur eine Zeile ausgewählt sein kann.Danke schonmal im Vorraus!
-
indexes enthält bereits was Du benötigst. QModelIndexList ist ein typedef für QList<QModelIndex> - die Schleife geht dann recht einfach:
@
foreach(QModelIndex index, indexes) {
QString value = index.data(Qt::DisplayRole);
// hier kannst Du value in Dein Array packen
}
@ -
Danke!!! Diesen Ansatz hatte ich auch schonmal, hatte ich fast 1:1 noch auskommentiert in meinem Code stehen... facepalm
Es knallt aber trotzdem:
@Fehler:conversion from 'QVariant' to non-scalar type 'QString' requested@Wenn ich daraus
@QVariant value = index.data(Qt::DisplayRole);@
mache, dann funktioniert's soweit.
Das kann ich dann mit einem Umweg über .toString() fixen.