QTableWidget neue Zeile anhängen und aktualisieren

Alles rund um die Programmierung mit Qt
Antworten
Tobias_L
Beiträge: 2
Registriert: 14. Oktober 2006 10:31
Wohnort: Hof

QTableWidget neue Zeile anhängen und aktualisieren

Beitrag 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

}
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Die Anzahl von Spalten muss definiert werden, bevor man was anhängen kann. siehe setColumnCount()...
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

upate() und repaint() sind low-level Funktionen, die du nicht aufrufen musst...
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Und mehr Code bitte ins Studio... Wo wird die Tabelle alloziert? Wie sind die Threads aufgebaut?
Antworten