Ich verwende Qt, um ein sortierbares Balkendiagramm-ähnliches Widget zu erstellen. Das Widget wird mit einem QHBoxLayout für jeden Balken im Diagramm (die auch Widgets sind) ausgelegt.Sortierbare QHBoxLayout
Wenn der Benutzer die Sortierparameter ändert, löscht mein Controller das Layout, sortiert es und ruft addWidget für jedes Element der Reihe nach auf. Das Problem, mit dem ich konfrontiert bin, ist, dass diese Liste ziemlich groß ist (mehr als 1000 Widgets), und Qt kriecht, wenn man versucht, so viele Elemente zu gestalten.
Ich habe herausgefunden, dass jedes Mal, wenn addWidget aufgerufen wird, Qt den Speicherort jedes Elements in der QHBoxLayout neu berechnen und dann aktualisieren wird. Dies ist ein Problem, da es viele unnötige Berechnungen für jedes LayoutItem vor demjenigen ausführt, das ich hinzufüge. Für 1000 Testobjekte, die ich einsetze, dauert das Umsortieren ungefähr 30 Sekunden, was natürlich viel zu lang ist.
Gibt es einen besseren Layout-Typ oder gibt es eine schnellere Möglichkeit, eine Sammlung sortierter Widgets zu einem Layout hinzuzufügen?
Edit: Offenbar ist das Problem, das ich habe nicht mit Qt jedes Element wieder zu legen, aber die Interna aller Eltern und Spielereien, die hinter den Kulissen gehen ich ein Testprojekt einrichten hinzufügen 1000 Knöpfe zu einem Layout, jedesmal einen Zähler auszudrucken. Die Zahlen wurden fast sofort ausgedruckt, obwohl es ~ 30 Sekunden dauerte, bis sich Qt wieder aufrichtete. Ich denke, das Problem existiert nicht nur mit QHBoxLayout, sondern mit Qt's Layoutsystem im Allgemeinen. Sieht so aus, als würde ich Widgets manuell positionieren und ein QLayout ganz umgehen. Danke an alle, die ihren Beitrag geleistet haben.
Ich akzeptiere das, da das Testen mir half herauszufinden, dass das Problem in QLayout inhärent war und nicht nur QHBoxLayout. Danke, @ Piotr! –