QT4: QTableWidget repaint bei schnellem fuellen....

Alles rund um die Programmierung mit Qt
Antworten
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

QT4: QTableWidget repaint bei schnellem fuellen....

Beitrag von nando »

Hi,
ich fuelle ein QTableWidget an Hand einer DB Abfrage....


etwa so:

Code: Alles auswählen

int row=1;
while(Query.next())
{
   pTable->setRowCount(row++);

   for(int col=0; col<QueryColumns;++col)
   {
       QTableWidgetItem *pItem = new     QtableWidgetItem(Query.value(col).toString());

       pTable->setItem(row, col, pItem);
   }
}

Das Problem ist nun, dass die Table sich nicht repaintet.....also so zeile fuer zeile.. sonder erst ganz am ende auf einen schlag sichtbar wird...

Ich habs schon mit QApplication::processEvents() probiert....


Hat vielleicht jemand einen Tip ?


Gruss,
Nando
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Deine for-Schleife wird so schnell abgearbeitet, da macht ein processEvents keinen Sinn. Die meiste Zeit verlierst du bei query.exec(). Wenn du ein einfrieren der Gui in dieser Zeit wegen langsamer Datenbankabfragen/-verbindungen vermeiden willst, dann lagere die DB-Abfragen in einen anderen Thread aus.
Mecki
Beiträge: 3
Registriert: 14. März 2007 15:33
Wohnort: Heidelberg
Kontaktdaten:

Zeilenanzahl

Beitrag von Mecki »

Ebenso kann man in QT 4.2. viel an Geschwindigkeit erreichen, wenn die Zeilenanzahl der Tabelle nicht schrittweise um Eins hochgezählt wird, sondern gleich auf die korrekte Größe gesetzt wird.
Antworten