Seite 1 von 1

(Q)Widget aus MainWindow in einem (Q)Thread verändern

Verfasst: 22. September 2009 11:20
von Neuling_
Hallo,

ich stehe gerade wieder gewaltig auf dem Schlauch.
Ich habe mit dem Qt Creator ein einfaches Programm geschrieben, dass mir einen QThread erstellt.
Ich besitze:
  • QThread_test.pro
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui (<- besitzt u.A. ein QLineEdit!)
    thread.cpp
    thread.h
So; ich möchte nun dass mein Thread (so heißt die von QThread abgeleitete Klasse) Zugriff auf das QLineEdit in der .ui hat.
Blos, wie mache ich das?
Die Klasse MainWindow kann ich der Klasse Thread ja nicht einfach Vererben:
Warning: Class Thread inherits from two QObject subclasses QThread and MainWindow. This is not supported!
<- das liegt daran dass ich Q_OBJECT jeweils in der Klasse habe
<- Aber was kann ich anstelle von Q_OBJECT benutzen?

Ich habe mir auch überlegt Pointer zu benutzen, blos weiß ich nicht wie.
Meine Gedanken gehen nur soweit, dass ich zwar das QLineEdit einem QLineEdit2(aus der Klasse Thread) zuweisen kann. Aber dann wird mir das Window ja nicht einfach aktualisiert...


Hilfe wäre toll ;)
Gruß.



PS: Hab es in C++ Grundlagen da es ja im Prinzip um Vererbung geht.

Verfasst: 22. September 2009 11:38
von Christian81
Da man eh nur im Mainthread zeichnen kann ist funktioniert es sowieso nicht.

Verfasst: 22. September 2009 11:39
von Neuling_
Und die Lösung des Problems?

Verfasst: 22. September 2009 11:41
von Christian81
Einen Workerthread zur Berechnung und Darstellung der Daten im Mainthread.

Verfasst: 22. September 2009 12:04
von Neuling_
Wie soll das funktionieren wenn doch nur der MainThread malen kann?

Ich kann zwar die Daten dann aus dem WorkerThread ziehen, aber dann doch auch nur einmal (wenn ich nichts update)


Danke schonmal für die Stichworte

Verfasst: 22. September 2009 12:17
von Christian81
Signals und Slots gehen auch über Threadgrenzen hinweg. http://doc.trolltech.com/4.4/signalsandslots.html

Verfasst: 22. September 2009 12:32
von Neuling_
das ist gut. da muss ich mich nachher mit beschäftigen!

bin gerade zufällig hierrauf gestoßen, da ist es mir mit den Signals auch durch den Kopf gegangen^^


Mahlzeit

Verfasst: 22. September 2009 15:56
von RHBaum
Ja was ist daran schlimmes ???

Signale / Slots nutzen intern auch Nachrichten .... nur deshalb koennens ueberhaupt ueber threads hinweg kommunizieren.

Du kannst also auch ueber nachrichten den Workerthread mit der GUI kommunizieren lassen ! iss gar ned so schwer !

DU kannst die kommunikation auch noch weiter tiefer ansetzen und ueber gemeinsame Variablen gehen (locks ned vergessen) ! wuerde sinn machen wenn deine daten die du uebermitteln willst bissi umfangreicher waeren und schlecht kopierbar ...
oder wenn du Daten von der GUI ->Workerthread uebermitteln musst, und keine eventschleife im workersthread haben willst/kannst ....

Ciao ...