Seite 1 von 1

QTreeView Items auslesen

Verfasst: 13. August 2007 22:18
von law.skynet
hi,

und hier ist schon mein neues qt problem :-)
ich habe eine qtreeview und will dort ein die daten eines selektieren items auslesen.

dazu habe ich folgendes gemacht:

Code: Alles auswählen

QModelIndex index = treeView->currentIndex();
    QStandardItem *item = model->itemFromIndex(index);
    QString editText = item->text();
aber igendwie bekomm ich immer nur ein seg fault....

Verfasst: 14. August 2007 09:11
von upsala
If index is an invalid index, this function returns 0.
Ich würde auf jeden Fall mal abfragen, ob 'item' überhaupt gültig ist. Nicht, daß diese Funktion aufgerufen wird, wenn noch gar nichts ausgewählt ist.

Verfasst: 14. August 2007 09:22
von law.skynet
ich habe es inzwischen so gelöst:

Code: Alles auswählen

QModelIndex index = treeView->currentIndex();
QVariant tmp = treeView->model()->data(index, Qt::UserRole);
QString content = tmp.toString();

qDebug() << "dbg: " << content;
Das funktioniert auch. wenn ich die richtige spalte wähle. aber wie lese ich damit sämtliche spalten einer reihe aus?

wie can ich den index um eine spalte weiter setzen?

Verfasst: 14. August 2007 12:22
von upsala
Schau dir mal die Doku zu QModelIndex an, es gibt z.B. die Möglichkeit mit sibling(...) die Spalten 'daneben' auszuwählen. Oder die Doku von QItemSelectionModel selectedIndexes() um alle ausgewählten Indexe zu bekommen.

Verfasst: 14. August 2007 12:24
von law.skynet
und hier die rätsels lösung

Code: Alles auswählen

    QModelIndex index = treeView->currentIndex();

    QModelIndex idxTitle = treeView->model()->index(index.row(), 0);
    QModelIndex idxDirector = treeView->model()->index(index.row(), 1);
    QModelIndex idxDate = treeView->model()->index(index.row(), 2);

    QVariant tmpTitle = treeView->model()->data(idxTitle, Qt::DisplayRole);
    QVariant tmpDirector = treeView->model()->data(idxDirector, Qt::DisplayRole);
    QVariant tmpDate = treeView->model()->data(idxDate, Qt::DisplayRole);