Seite 1 von 1

Verwendung von signals/slots in QThread

Verfasst: 25. Juni 2007 15:15
von Giri
Hallo!

Ich bin noch relativ neu in Qt und hänge leider an einem Problem zu dem ich noch keine Lösung finden konnte.

Ich möchte sämtliche Netzwerkverbindungen (Ftp, Tcp, Udp) in meinem Programm mittels Threads realisieren. Jetzt habe ich das Problem dass mein Thread sehr unzuverlässig läuft und das Programm oft abstürzt.

Code: Alles auswählen

void MyFtpThread::run()
{
	m_ftp = new QFtp();

	…

	connect(m_ftp, SIGNAL(stateChanged(int)),this,SLOT (StateChange(int)), Qt::DirectConnection);
	connect(m_ftp, SIGNAL(commandFinished(int, bool)),this,SLOT(CommandFinished(int, bool)), Qt::DirectConnection);
		
	ConnectToFtp(m_sFtpHost, m_sFtpUser, m_sFtpPwd);
	
	exec();
}
Wenn ich versuche das so zu machen bekomme folgendes warning:

warning: QObject: Cannot create children for a parent that is in a different thread.

Ich verstehe ja warum ich diese warnings bekomme und wo das Problem eigentlich liegt (this im connect verweist noch auf den main-thread).

Allerdings muss ich leider diese connect hier verwenden und habe keinen Plan wie ich sowas anders machen könnte :cry: . Habe diesbezüglich leider auch noch nirgends was gefunden (beispiele mit threads und connects).

Wäre toll wenn von euch schon mal jemand etwas in die Richtung gemacht hat und mir vielleicht einen Hinweis geben könnte.

Schöne Grüße,
Giri

Verfasst: 25. Juni 2007 17:04
von upsala
Die Warnung kommt nicht von deinem Connect sondern von einem Object, daß neu erstellt wurde.

Verfasst: 27. Juni 2007 09:35
von Giri
Hast Recht gehabt, danke. Das Problem ist an einer anderen Stelle aufgetreten ...

Schöne Grüße,
Giri