Thread -> GUI-Thread PostMessage

Alles rund um die Programmierung mit Qt
Antworten
saoirse
Beiträge: 18
Registriert: 16. April 2011 17:49

Thread -> GUI-Thread PostMessage

Beitrag von saoirse »

Hi,

ich möchte gern von einem Thread auf den Mainthread (GUI) zugreifen mittels "PostMessage()". Hierbei wird nicht direkt ein Widget angesprochen, sondern ich möchte gern eine Methode einer anderen Klasse ansprechen.

Ich hab gerade die QMetaObject::invokeMethod() Methode ausprobiert - innerhalb einer class kein Problem, aber zwischen zwei Klassen?

Code: Alles auswählen

class QtTestApp: public QMainWindow 
{
	Q_OBJECT

public:
	QtTestApp(QWidget *parent = 0, Qt::WFlags flags = 0);
	~QtTestApp();

public:
                  void MyMethod(QString &str); 
}; 

Code: Alles auswählen

class UdpThread : public QThread
{
	Q_OBJECT

public:
	UdpThread(QObject *parent);
	~UdpThread();

public:
	virtual void run();

private slots:
	void readData(); 
}; 



void UdpThread::readData() 
{
          bool rtn = QMetaObject::invokeMethod(this, "MyMethod", Qt::QueuedConnection, Q_ARG("myString"));
}
Wie bekomme ich den QString am einfachsten in die QtTestApp() class? Gibt es auch eine Möglichkeit mit mehreren Variablen, die man hier übergeben kann?

Gruß
saoirse
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

invokeMethod ist im Prinzip das selbe wie eine Signal-Slot-Verbindung.
Antworten