Seite 1 von 1
QListView reagiert nicht mehr nach Bearbeitung mit QThread
Verfasst: 1. November 2007 12:38
von Frank Kose
Hi,
Eigentlich ganz einfach. Ich habe ein QListView, in dem ich eine Datenübersicht (Buchungsdaten) habe. Da die Operationen darauf etwas länger dauern können, wollte ich die Rechenarbeit auf einen Thread auslagern. Da liegt auch noch nicht das Problem. Ich habe einen Zeiger auf das QListView einfach dem QThread als Zeiger übergeben. Die Operationen werden getätigt und jetzt kommts:
Nach Abschluß des Threads reagiert das QListView nicht mehr auf Maussignale. Diese werden registiert aber die Neuzeichnung wird nicht ausgelöst. Das zeigt sich indem man das Widget, indem das ListView steckt kurz minimiert und wieder maximiert und damit extern dies auslöst.
Ich habe versucht dies zu umgehen, in dem ich die Informationen eines Items in QStringlist übergeben und wieder zurückgegeben habe. Selbe Reaktion.
Vieleich liegt das an der Version. Ich arbeite mit QT 3.3.3.
Vielen Dank für jede eventuelle Hilfe, Gruß, Frank :

Verfasst: 1. November 2007 13:06
von Christian81
Man kann nur aus dem MainThread heruas zeichnen. In den anderen Threads kann man zwar berechnen, aber nichts auf die Gui ausgeben.
Hmmmm.....
Verfasst: 1. November 2007 15:52
von Frank Kose
Hi Christian,
auf jeden Fall erst mal danke für die schnelle Antwort.
Wie übergebe ich dann Daten aus einem ListView an den Thread zum berechnen und umgekehrt ohne das ich den Mainthread ändere. Sagen wir mal in der ersten und zweiten Spalte stehen Summanden und in der dritten soll die Summe erscheinen. Und das für "ganz,ganz viele".
Ich hatte die Informationen ja schon in einen "Container" als Stringliste (Strings entsprechen Einträgen in den Spalten) übergeben, die Berechnung ausgeführt und diese wieder in den ListView rüberkopiert.
Vielen Dank, Frank
Verfasst: 1. November 2007 16:06
von Christian81
Der GUI-Thread muss die Daten im ListView ändern. Wie Du das machst ist deine Sache. Entweder per gemeinersamer Variable oder per Signal/Slot - Verbindung zwischen Main- und Workerthread.
Ich probiere es aus...
Verfasst: 1. November 2007 16:58
von Frank Kose
Hi Christian,
klingt sehr plausibel. Mit der gemeinsamen Variable (Zeiger auf Listview ist für Main- und Workerthread identisch) habe ich es ja probiert, funktioniert nicht. Mit der SIGNAL/SLOT-Verbindung habe ich das Problem, dass , meiner Meinung nach, nur Ableitungen von QObject Signale emittieren können, was ein Thread nicht ist.
Mit QCustomEvent kann ich Events signalisieren, aber auch dann geschieht das gleiche - das ListView reagiert nicht. Bin ich vieleicht zu blöd?
Wie auch immer, ich probiere erst mal rum. Deine Message war ja klar.
Auf jeden Fall, vielen Dank.
Re: Ich probiere es aus...
Verfasst: 1. November 2007 17:04
von dhcase
Frank Kose hat geschrieben:Mit der SIGNAL/SLOT-Verbindung habe ich das Problem, dass , meiner Meinung nach, nur Ableitungen von QObject Signale emittieren können, was ein Thread nicht ist.
QThread ist doch von QObject abgeleitet...
Qt-Doku hat geschrieben:The QThread class provides platform-independent threads.
Inherits QObject.
Re: Ich probiere es aus...
Verfasst: 1. November 2007 17:22
von Christian81
Frank Kose hat geschrieben:
klingt sehr plausibel. Mit der gemeinsamen Variable (Zeiger auf Listview ist für Main- und Workerthread identisch)
Das ist doch aber ein GUI-Element in das Du dann direkt zeichnest!!!
Hi dhcase, meine Qt-Doku...
Verfasst: 1. November 2007 18:04
von Frank Kose
sagte "Inherits Qt". Und "Qt inherited by QObject..." Ich denke, das QTHread und QObject dann zwei Ableitungen von Qt sein müßten.
Vieleicht ist der Unterschied versionsbedingt.
Gruß, Frank
Hi Christian...
Verfasst: 1. November 2007 18:10
von Frank Kose
.....eigentlich müßte es mit diesem GUI-Element ja auch klappen. Ich probiere es noch einmal aus.
Bis morgen, Frank.
Verfasst: 1. November 2007 18:16
von dhcase
Ich sehe gerade erst, dass du mit Qt 3 arbeitest... Signale über Thrad-Grenzen hinweg gehen erst ab Qt 4, das ist dann wohl keine Option für dich.
Moin, moin...
Verfasst: 2. November 2007 10:28
von Frank Kose
..hi dhcase, das war dann mal ein klarer Schritt weiter, auch wenn negativ. Auf jeden Fall, ich bin neu im Forum und freue mich über die prompten Antworten, spart viel Zeit. Wenn ich weiterhelfen kann, werde ich es genauso tun...
Bis denne, Frank