6 Stimmen

Kann itemFromIndex nicht im angeklickten Signal von QTreeView mit QSortFilterProxyModel verwenden

Ich habe eine QTreeView mit einem QSortFilterProxyModel zwischen der Ansicht und einem QStandardItemModel zum Sortieren des Baums. Ich möchte dann auf Klicks in der Ansicht durch das Signal clicked() handeln.

Die Modelle/Ansicht sind ähnlich aufgebaut wie diese:

mymodel  = new QStandardItemModel(5, 5, this);
mysort = new MySortProxy(this);
mysort->setSourceModel(mymodel);
myview = new QTableView(this);
myview->setSourceModel(mysort);
connect(myview, SIGNAL(clicked(QModelIndex)), this, slot(clickAction(QModelIndex)));

Diese Einrichtung funktioniert und sortiert meine Daten so, wie ich sie haben möchte. Wenn Sie auf ein Element klicken, wird der clickAction()-Slot mit dem Index des angeklickten Elements aufgerufen. Ich versuche dann, das Element aus dem Index in den Steckplatz zu erhalten:

void myclass::clickAction(const QModelIndex &index)
{
    QStandardItem *item = mymodel->itemFromIndex(index);
}

itemFromIndex gibt jedoch NULL zurück.

Wenn ich das QSortFilterProxyModel entferne und das Modell direkt als sourceModel in der Ansicht einstelle, funktioniert alles perfekt. D.h..

myview->setSourceModel(mymodel);    // was setSourceModel(mysort);

mymodel->itemFromIndex(index) gibt jetzt das Element wie erwartet zurück, aber offensichtlich kann ich jetzt nicht meinen eigenen Sortier-Proxy verwenden.

Kann mir jemand sagen, was ich falsch mache und wie ich das Element in den Klick-Slot bekommen kann, wenn ich einen Sortfilter-Proxy im Ort haben?

Ich verwende Qt-4.3.1.

Danke für jede Hilfe, Giles

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X