Anzeige:
Ergebnis 1 bis 4 von 4

Thema: QT::Connect zwischen zwei Fenstern

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87

    QT::Connect zwischen zwei Fenstern

    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
    Celindir
    May the source be with you...

    www.celindir.de

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Hi anda_soka,

    ich habs jetzt in einem ersten Schritt mal ohne zu übergebende Parameter versucht, um überhaupt mal eine Reaktion zu bekommen.
    Code:
    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
    Celindir
    May the source be with you...

    www.celindir.de

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •