Seite 1 von 1

QT4: QTableWidget repaint bei schnellem fuellen....

Verfasst: 4. April 2007 18:33
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

Verfasst: 4. April 2007 19:01
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.

Zeilenanzahl

Verfasst: 12. April 2007 14:19
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.