Seite 1 von 1

QTableWidget neue Zeile anhängen und aktualisieren

Verfasst: 28. März 2007 10:28
von Tobias_L
Hallo!

Nachdem ich schon schwer verzweifelt bin, muss ich mich einfach mal an euch wenden.

Ich will eigentlich nur eine Zeile an ein QTableWidget anhängen und anschliessend aktualisieren. Als QT Version muss ich 4.1.4 verwenden, da ich mich in einem vorgegebenen Framework befinde.

Beim Testen ist mir aufgefallen, dass die rote Zeile nicht immer ausgeführt wird. Ich habe einen neuen QThread erzeugt, der dieses Kommando immer ignoriert. Er fügt zwar den Inhalt hinzu, aber die Zeilenanzahl wird nicht erhöht. Bei allen anderen Threads funktioniert es einwandfrei ...

Was mich noch verwundert ist, dass keine update oder repaint Funktion ausführt wird. Trotz riesiger Bemühungen

Falls jemand einen Tip oder eine Idee hat würde ich mich riesig freuen.


Gruß Tobias



Code:
void PPGuiExtApp::appendToTable(QString aScript, QString aResult)
{
PPUtil::Log(1, "PPGuiExtApp::appendToTable() %s, %s", aScript.toAscii().data(), aResult.toAscii().data()); // log
mutexTable.lock();
table->setRowCount(count+1); // Neue Zeile anhaengen
table->setItem(count ,0 , new QTableWidgetItem(aScript)); // setze 1. Spalte
table->setItem(count ,1 , new QTableWidgetItem(aResult)); // setzt 2. Spalte
table->setRowHeight(count,16); // Zeilenhoehe anpassen
table->update(); // Tabelle aktualisieren
table->repaint(); //

++count;
mutexTable.unlock();
update(); // Widget aktualisieren
repaint(); //
QCoreApplication::instance()->processEvents(QEventLoop::AllEvents); // Offene Events ausfuehren

}

Verfasst: 28. März 2007 10:53
von lepsai
Die Anzahl von Spalten muss definiert werden, bevor man was anhängen kann. siehe setColumnCount()...

Verfasst: 28. März 2007 10:55
von lepsai
upate() und repaint() sind low-level Funktionen, die du nicht aufrufen musst...

Verfasst: 28. März 2007 10:56
von lepsai
Und mehr Code bitte ins Studio... Wo wird die Tabelle alloziert? Wie sind die Threads aufgebaut?