Seite 1 von 1

Eigene Zählerspalte in QTableWidget

Verfasst: 5. Juni 2006 21:43
von Alci
Hallo,

ich hätte eine Frage bezüglich QTableWidget. Ich will in der QTableWidget in der ersten Spalte einen Zeilenzähler drin haben. Dafür möchte ich aber nicht den Vertikal-Header verwenden, da mit diesem das Hinzufüngen von sehr vielen Einträgen nur mit einer starken Verzögerung funktioniert (habe alles schon getestet).

Ansich ist es ja erstmal kein Problem, aber folgendes: Wenn ich z. B. um die 20000 Einträge drin habe und dann z. B. den dritten Eintrag (Index 2!) lösche, müssen ja die darauf folgenden Zeilen in der Zeilenzähler-Spalte aktualisiert werden. Nun habe ich ein paar Tests gemacht und habe dabei festgestellt, dass das ziemlich langsam (eine Verzögerung von ca. 5 Sekunden je Eintrag auf meinem PC) geht. Wenn ich die Vertikalen-Header als Zeilenzähler verwende, und da einen Eintrag rauslöse, geht das ganze ohne jegliche Verzögerung.

Nun ja, meine Frage könnt Ihr euch ja nun sicherlich vorstellen. Wie mache ich das am besten? Oder wie macht es QT, dass da keine Verzögerung drin ist?

Verfasst: 5. Juni 2006 22:13
von upsala
Verwende QTableView und beschäftige dich ein bißchen mit MVC. Dann kannst du auch den vertikalen Header verwenden.

Verfasst: 6. Juni 2006 08:07
von Alci
Hi,

ist es beim vertikalen Header auch möglich, den Button (zumindest sieht es nach einem Button aus) auch durch ein anderes Control zu ersetzen, wie z. B. ein QLabel?

Verfasst: 6. Juni 2006 09:02
von upsala
Es ist kein QButton. Wenn du eine andere Darstellung willst, mußt den Style ändern.

Verfasst: 6. Juni 2006 16:30
von Alci
Hi,

ich glaube, dass ich QTableView hernehmen werden. Ist es richtig, dass man selbst für das Zeichnen der einzelnen Zellen verantwortlich ist?

Verfasst: 6. Juni 2006 16:31
von Alci
Hi,

ich glaube, dass ich QTableView hernehmen werden. Ist es richtig, dass man selbst für das Zeichnen der einzelnen Zellen verantwortlich ist?

Verfasst: 6. Juni 2006 23:21
von upsala
Nein, ist es nicht. Es reicht im Prinzip wenn dein Model den Text liefert.