Verwendung von signals/slots in QThread
Verfasst: 25. Juni 2007 15:15
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.
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
. 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
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();
}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
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