Seite 1 von 1

QTreeView Reset

Verfasst: 5. März 2009 19:55
von CLRS530
Hi,
ich habe seit längerem ein Problem bei meinem Projekt, welches einen Buffer overrun in verschiedenen Modulen ausgibt, was aber keinen weiteren Sinn macht.
Ich gebe mehere TreeViews in einem Splitter an, die ich mit jeweils einer neuen Instanz eines Models befülle.
Beim setModel des 2. TreeViews tritt dieser Fehler auf.

Code: Alles auswählen

fileBrowser[index]->setSelectionMode(QTreeView::ExtendedSelection);
fileBrowser[index]->setSelectionBehavior(QTreeView::SelectItems);
fileBrowser[index]->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
fileBrowser[index]->setUniformRowHeights(true);
fileBrowser[index]->setSortingEnabled(true);
fileBrowser[index]->setColumnWidth(0, 300);
fileBrowser[index]->setColumnWidth(1, 70);
fileBrowser[index]->setColumnWidth(2, 70);
fileBrowser[index]->setColumnWidth(3, 120);
fileBrowser[index]->setColumnWidth(4, 120);
fileBrowser[index]->setColumnWidth(5, 120);
fileBrowser[index]->setModel(dirModel[index]);
fileBrowser[index]->sortByColumn(0, Qt::AscendingOrder);
Das ist der Teil.
Jetzt habe ich Testweie sort generell ausgestellt und auch die letzte Zeile auskommentiert und ich habe keine weiteren Probleme.
Lange Rede kurzer Sinn. Ich lösche in dieser Funktion meine gesamten Daten und rufe davor layoutAboutToBeChanged und layoutChanged dannach auf, um sie dannach wieder neu zu befüllen (das sollte und läuft automatisch durch index...).
Ich habe vorher hiermit immer schon Probleme gehabt. Möchte ich Bspw. völlig neue Daten im TreeView anzeigen, dann stelle ich zuerst das Model ein und rufe dann setRootIndex(QModelIndex()) auf, um einen reset herbeizuführen, was so auch funktioniert. Aber das sieht nicht nach dem aus, wie man es machen sollte.
Für mich sieht es jetzt jedenfalls so aus, als ob in der Funktion, durch das vollständige löschen und wiederbefüllen mit layoutChanged irgendwas nicht richtig funktioniert, denn meine Funktionen sehen so ganz gut aus und ich hatte auch bisher keine Probleme gehabt.