Frage

Ich habe eine QTreeWidget dass ich einfügen Artikel in, und der Benutzer kann eine Spalte wählt sie zu sortieren. Da die Elemente eingefügt werden, werden sie nur am Ende angehängt, anstatt die Art, die automatisch durchgeführt werden. Wenn ich den Header klicken, um zwischen aufsteigend zu wechseln / Abstiegs es werden die aktuellen Einträge sortieren.

Ich dachte, ich nennen könnte sortItems () und die Spalte verwenden, die von SortColumn () zurückgegeben wird, aber ich bin nicht in der Lage zu sehen, wie kann ich sehen, ob der Benutzer ein aufsteigendes tut oder absteigend sortieren.

Ich bin nicht besorgt über die Effizienz dieser, so will ich nicht warten, bis die Einfügungen fertig sind und dann die Art tun. Ich möchte eine Echtzeit sortierte Liste.

Danke!

War es hilfreich?

Lösung

Wenn Ihr Baum Widget treeWidget genannt wird, sollten Sie in der Lage sein, die header () Methode aufrufen, die von QTreeWidget der Eltern QTreeView ist, dann sortIndicatorOrder () aus der Klasse QHeaderView:

treeWidget->header()->sortIndicatorOrder()

Damit wissen Sie die aktuelle Sortierreihenfolge des Benutzers, und Sie können Ihre Art auf dem Einsatz gelten diese nach.

Andere Tipps

Ich habe kein Setup für die Prüfung aber in der Dokumentation nach, sollte dies Sortierung verursachen auftreten als Elemente eingefügt werden.

...
treeWidget.sortByColumn(0, Qt::AscendingOrder); // column/order to sort by
treeWidget.setSortingEnabled(true);             // should cause sort on add

Qt empfiehlt dagegen tun, wie es auf Kosten der Leistung sein und sagen, dass Sie nach enabled gesetzt Sortierung sollten alle Adds abgeschlossen sind. Hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top