Signal<->Slot zwischen Thread und Hauptwidget
Verfasst: 20. Januar 2010 11:37
Hallo zusammen ...
Ich versuche mich gerade in Qt einzuarbeiten, da ich demnächst ein Programm mit grafischer Benutzeroberfläche konstruieren muss. Zur Zeit beschäftige ich mich gerade mit Threads, da auch das Programm später mal eine (Endlos)Schleife besitzen wird, welche Daten verarbeitet.
Ich bin nun auf ein Problem gestoßen, welches ich nicht lösen kann.
Mir ist es möglich, aus dem Thread heraus ein Signal zu sende, auf welches ein Slot im Hauptwidget reagiert, umgekehrt geht es allerdings anscheinend nicht...
Hier mal der Konstruktor des Threads:
Im Widget aus dem der Thread aufgerufen wird (wenn ich das recht verstehe also das parent QObject) befindet sich der Slot "talk(int)". Dieser wird auch aufgerufen, wenn im Thread "Threadsignal" aufgerufen wird.
Im Thread existiert nun der Slot "RePos()", welcher aufgerufen werden soll, wenn im Widget das Signal "customSignal2()" gesendet wird.
Dies geschieht allerdings nicht.
Wenn ich das Programm starte erscheint im Konsolenfenster auch immer folgende Meldung:
"Object::connect: No such slot MyThread::RePos() in c:\...\mythread.cpp:11
Object::connect: (sender name: 'myQtAppDLG')"
In Zeile 11 steht der besagte connect-Befehl im Konstruktor. Ich bin mir nicht sicher, aber wenn ich das richtig Verstehe, ist myQtAppDLG die Klasse, welche vom Designer erstellt wird, wenn ich die Benutzeroberfläche erstelle, oder?
Ich würde mich sehr über euere Hilfe freuen
Ich versuche mich gerade in Qt einzuarbeiten, da ich demnächst ein Programm mit grafischer Benutzeroberfläche konstruieren muss. Zur Zeit beschäftige ich mich gerade mit Threads, da auch das Programm später mal eine (Endlos)Schleife besitzen wird, welche Daten verarbeitet.
Ich bin nun auf ein Problem gestoßen, welches ich nicht lösen kann.
Mir ist es möglich, aus dem Thread heraus ein Signal zu sende, auf welches ein Slot im Hauptwidget reagiert, umgekehrt geht es allerdings anscheinend nicht...
Hier mal der Konstruktor des Threads:
Code: Alles auswählen
MyThread::MyThread(QObject *parent)
: QThread(parent)
{
connect(this, SIGNAL(ThreadSignal(int)), parent, SLOT(talk(int)));
connect(parent, SIGNAL(customSignal2()), this, SLOT(RePos()));
}Im Thread existiert nun der Slot "RePos()", welcher aufgerufen werden soll, wenn im Widget das Signal "customSignal2()" gesendet wird.
Dies geschieht allerdings nicht.
Wenn ich das Programm starte erscheint im Konsolenfenster auch immer folgende Meldung:
"Object::connect: No such slot MyThread::RePos() in c:\...\mythread.cpp:11
Object::connect: (sender name: 'myQtAppDLG')"
In Zeile 11 steht der besagte connect-Befehl im Konstruktor. Ich bin mir nicht sicher, aber wenn ich das richtig Verstehe, ist myQtAppDLG die Klasse, welche vom Designer erstellt wird, wenn ich die Benutzeroberfläche erstelle, oder?
Ich würde mich sehr über euere Hilfe freuen