PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT::Connect zwischen zwei Fenstern



celindir
29-08-2003, 09:12
Hallo zusammen,

wahrscheinlich eine triviale Frage, aber wie connecte ich bei QT ein Signal aus einem Fenster mit einem Slot aus einem anderen Fenster?

Mein Programm öffnet ein zweites Fenster (separate .ui, .cpp und .h- Datei)

Wenn das zweite Fenster geschlossen wird, dann sollen Daten an das erste Fenster übergeben werden.

Ich dachte mir, dass müsste doch über ein

emit fensterGeschlossen(QStringList)

gehen und im anderen Fenster einen Slot

datenausFenster(QStringList)

jetzt müsste ich nur noch richtig connecten.

Also habe ich in der fenster2.cpp ein
connect (this, SIGNAL(fensterGeschlossen(QStringList)), this, SLOT(datenausFenster(QStringList) ))

gemacht, was natürlich nicht funktioniert, weil der SLOT sich ja gar nicht bei this befindet.

Aber wie muss ich den SLOT aus einem anderen Fenster referenzieren?

Sorry, wenn die Frage etwas blöd gestellt ist, aber ich habe gerade nicht so den Durchblick, so dass ich noch nicht mal die Frage vernünftig stellen kann. (Deshalb fehlen mir auch die richtigen Suchbegriffe für Google)

Ich hoffe, Ihr versteht, was ich meine und könnt mir mit ein paar Links oder Hinweisen weiterhelfen.

Vielen Dank

anda_skoa
29-08-2003, 10:32
Du kannst den connect überall machen, wo du die Pointer der beiden Fenster hast.

Wenn du als Parameter eines Signals eine Klasseninstanz übergibst und diese ansich nicht ändern wirst, dann nimm eine const Reference, also
const QStringList& statt QStringList

Ciao,
_

celindir
29-08-2003, 11:16
Hi anda_soka,

ich habs jetzt in einem ersten Schritt mal ohne zu übergebende Parameter versucht, um überhaupt mal eine Reaktion zu bekommen.


connect ( this, SIGNAL(emittedSignal()), this , SLOT(recievedSignal()) );
wobei emittedSignal() ein Signal in der zweiten Datei unterfenster.cpp ist und recievedSignal() ein Slot in der ersten Datei hauptfenster.cpp

das Programm startet zwar, wenn aber das zweite Fenster aufgerufen wird, erhalte ich folgende Fehlermeldung

QObject::connect No such slot unterfenster::recievedSignal()
QObject::connect (sender name: 'Form1')
QObject::connect (reciever name: 'Form1')

Wobei Form1 im Moment der Name des Unterfensters ist.

Wie müsste denn der Connect-Aufruf aussehen?

Vielen Dank

anda_skoa
29-08-2003, 13:20
Original geschrieben von celindir

Wie müsste denn der Connect-Aufruf aussehen?


Wie gesagt musst du als Receiver den Pointer auf das andere Fenster übergeben.

Logischerweise findet er im Moment den Slot nicht, weil der Receiver der selbe wie der Sender ist.

Ciao,
_