Nicht dokumentierte Methode der QTableView-Klasse?
-
Hallo Leute,
habe hier etwas seltsames. Ich habe zwar damit mein Problem beseitigt aber ich weiß jetzt nicht warum das funktioniert, ich hoffe das ihr mir vielleicht helfen könnt.Es ging um die Einhaltung der Sortierung in einer QTableView. Wenn ich neue Daten in die Tabelle geladen habe wollte ich das die Sortierung nach bspw. Spalte 2, absteigend auch für den nächsten Datensatz berücksichtigt wird, hat er aber nicht gemacht obwohl setSortingEnabled() auf true gesetzt war.
Im Internet habe ich nach einem Beispiel gesucht wie man die Sortierreihenfolge und die dazugehörige Spalte zwischenspeichern kann, um beim nächsten laden eines Datensatzes weiterhin die gleiche Sortierung zu berücksichtigen. Durch Google bin ich auf folgenden Beitrag im Qt-interest Archive gestoßen : http://lists.trolltech.com/qt-interest/2008-06/msg00302.html
In diesem Beispielcode der auf dieser Seite auftaucht gibt es eine Zeile die ich nicht verstehe :
view->setSortingEnabled(view);
Es funktioniert jetzt alles wenn ich das genau so mache ( also meine QTableview als Parameter anhängen anstatt "true" )
In der Qt Dokumentation steht aber nichts davon drin, dort gibt es nur die Methode die einen boolean als Parameter verlangt. Ist diese Methode nicht in der Doku enthalten oder bin ich nur blind und übersehe etwas?
-
Hi,
ist view ein Pointer? Dann vermute ich einfach, dass der Compiler den Ausdruck (view) mit (view != NULL) übersetzt und so hast du einen bool-Wert.
-
Ja es ist ein Pointer ( sowohl im Beispiel-Code oben als auch bei mir im Code )
Aber selbst wenn es so wäre wie du es beschrieben hast, dann dürfte es keinen Unterschied machen welche Variante ich nehme und die eigentliche Variante mit setSortingEnabled(bool) sollte dann ebenfalls funktionieren.
-
phcn.fraggle schrieb:
Ja es ist ein Pointer ( sowohl im Beispiel-Code oben als auch bei mir im Code )
Aber selbst wenn es so wäre wie du es beschrieben hast, dann dürfte es keinen Unterschied machen welche Variante ich nehme und die eigentliche Variante mit setSortingEnabled(bool) sollte dann ebenfalls funktionieren.QTableView.setSortingEnabled (self, bool enable)
aus http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtableview.html#setSortingEnabled
Im übrigen behandelt dein genanntes Beispiel den QTreeView.
Vielleicht ist es ja buggy/undefiniert und du musst eine Referenz/Pointer auf dein eigenes Objekt übergeben. Dies bezweifle ich aber!
Ich persönlich halte nicht viel von Qt, aber ich denke die Entwickler würden eine so häufig gebrauchte Methode nicht einfach vergessen.Aber ohne deinen Code und Testumgebung kann man das nicht genau sagen.