Seite 1 von 1

Eigene View

Verfasst: 16. März 2009 09:22
von zwutz
Hallo zusammen,

ich hock seit einiger Zeit an einer eigenen "View", da wir hier einige besondere Anforderungen an die Darstellung haben, die die Standard-Views leider nicht bieten (auch ableiten bringt nix)

Im Grunde besteht das ganze aus mehreren, untereinander in einem Layout eingefügten Items, die man auf- und zuklappen kann.

Eingeklappt sieht das ganze so aus:
Bild

und ausgeklappt so:
Bild

ihr seht also, dass die Anforderungen etwas speziell waren... deswegen auch die selbstgestrickte View

Jedes einzelne Textfeld ist dabei von QWidget abgeleitet, da einige Events behandelt werden müssen (Klick- und Paintevents z.B.). Dazu einige Layouts

Es funktioniert soweit wunderbar und man kann damit arbeiten, allerdings hat ein Extremtest mit >5500 Zeilen (pro Zeile 3 Layouts) und insgesamt knapp 600.000 Widgets einige Schwächen stark zum Vorschein gebracht... das Laden dauert ewig (was aber auch an der Bibliothek dahinter liegen kann... da wird man also nicht viel machen können).
Aber auch das aus- und einklappen ist alles andere als flüssig (Profiler gibt aber grünes Licht... also auch kein Angriffspunkt vorhanden). Dazu kommt ein Speicherverbrauch von >500MB.

Meine Frage daher: Wie kann man das besser lösen? Hat jemand von euch schonmal ein ähnliches Problem gehabt und lösen können?

Danke für jeden Hinweis :)

Verfasst: 16. März 2009 15:19
von CLRS530
Vor das Performanceproblem kommst du auch schon mit QTreeView oder QTablöeView alleine. Das wurde auch schon vielfach diskutiert und es gibt da leider kein Heilmittel.

Verfasst: 17. März 2009 07:33
von macman
Natürlich gibt es ein Heilmittel. Wenn ich eine View auf eine Datenbank habe, dann lade ich mir auch nicht die ganze DB in den Speicher und packe schon mal alles in Widgets, weil sie ja vielleicht mal angezeigt werden. Wie das genau realisiert werden muss, hängt von den Anforderungen ab, aber der Weg sollte damit aufgezeigt sein.

Verfasst: 17. März 2009 09:30
von chrootdev
Ich glaube das was du suchst heißt "fetch"!

Verfasst: 17. März 2009 10:32
von CLRS530
macman hat geschrieben:Natürlich gibt es ein Heilmittel. Wenn ich eine View auf eine Datenbank habe, dann lade ich mir auch nicht die ganze DB in den Speicher und packe schon mal alles in Widgets, weil sie ja vielleicht mal angezeigt werden. Wie das genau realisiert werden muss, hängt von den Anforderungen ab, aber der Weg sollte damit aufgezeigt sein.
Entweder hast du mich missverstanden oder du hast selbst noch kein View mit vielen Elementen genutzt. Klar wird es bei ihm mit der Ladedauer an etwas anderem liegen, jedoch dauert auch sonst das Scrollen und Neuzeichnen sehr lange.
In dem Fall sollte man schauen, Möglichkeiten zu finden das angezeigte durch Drop Down Felder weiter einzuschränken.