Seite 1 von 1

Funktion erst nach UI Start aufrufen

Verfasst: Mittwoch 8. Dezember 2010, 16:58
von solar22
Hallo!
Ich hab eine Funktion loadTableItems() welche über 1000 Datensätze in ein QTableWidget einspielt.
Das Problem ist nur, das dies den Programmstart verlangsamt.
Ist es möglich die Funktion erst nachdem die GUI gestartet ist aufzurufen?

Code: Alles auswählen

app = QtGui.QApplication(sys.argv)        
dialog = MeinDialog() 
dialog.show()
dialog.loadTableItems()
Das hab ich schon probiert und es führt leider nicht zum gewünschten Effekt.

Gruß.
solar22

Re: Funktion erst nach UI Start aufrufen

Verfasst: Mittwoch 8. Dezember 2010, 17:37
von Hyperion
Evtl. könntest Du das Laden in einen separaten Thread auslagern? Dazu gibt es einige Artikel in der Qt-Doku (also nicht die Python eigenen Thread-Module nutzen!).

Re: Funktion erst nach UI Start aufrufen

Verfasst: Mittwoch 8. Dezember 2010, 17:53
von lunar
@solar22: Außerdem ist es bei derartig großen Datensätzen unter Umständen ratsam, eine eigene Model-Klasse zu implementieren. So musst Du nicht den gesamten Datenbestand auf einmal holen, sondern nur diejenigen Teile, welche in der Anzeige gerade dargestellt werden.

Genaueres kann man ohne Hintergrundinformationen allerdings nicht sagen.

Re: Funktion erst nach UI Start aufrufen

Verfasst: Mittwoch 8. Dezember 2010, 18:18
von solar22
@lunar:
Die Tabelle enthält immer alle Datensätze.
Bildschormgrößen bedingt sind immer ca. 30 zu sehen.
Meinst du das die anderen beim scrollen erst geladen werden sollten?

Re: Funktion erst nach UI Start aufrufen

Verfasst: Mittwoch 8. Dezember 2010, 18:22
von Hyperion
solar22 hat geschrieben:@lunar:
Meinst du das die anderen beim scrollen erst geladen werden sollten?
Genau das. Das "SqlQueryModel" handhabt das z.B. so. http://doc.qt.nokia.com/4.6/qsqlquerymodel.html