Qt - SIGNALS / SLOTS // Hauptfenster



  • Hallo mal wieder!

    Ich arbeite gerade an einer Anwendung mit 2 Fenstern:
    - ein Hauptfenster (QWidget)
    - ein Dialog (QDialog)

    Nun habe ich jedoch noch ein paar Verständnisprobleme mit den SIGNALS und den SLOTS:

    Frage1:
    Syntax:
    connect(Widget, SIGNAL(Signal), ???, SLOT(Slot))

    Den dritten Parameter verstehe ich nicht...
    Angenommen, ich habe einen Button "Beenden" im Hauptfenster "window" (also keine weiteren Parentfenster), warum funktioniert dann folgender Befehl nicht:

    connect(button_beenden, SIGNAL( clicked() ), window, SLOT( close() ))

    oder warum funktioniert das hier nicht:

    connect(button_beenden, SIGNAL( clicked() ), this, SLOT( close() ))

    Warum muss ich hier das komische qApp benutzen?? Für was genau steht das denn und was genau beschreibt denn der dritte Paramter in dieser Funktion??

    Frage2:

    //HalloWelt.cpp
    #include <QApplication>
    #include <QPushButton>
    
    int main(int argc, char *argv)
    {
      QApplication app(argc, argv);
      QPushButton hello("Hallo Welt");
      hello.resize(100,30);
      hello.show();
      return app.exec();
    }
    

    Dieser Code erzeugt ein Fenster mit einem Button "Hallo Welt".

    Wenn ich nun eine neue Klasse MyWidget abgeleitet von QWidget hinzufüge, dann erscheinen manchmal 2 Fenster und manchmal nur noch das neue Widget...aber warum?

    Ich weiß leider nicht mehr genau den Quellcode des Programms, als noch 2 Fenster erschienen sind, aber ich würde einfach gerne wissen was da genau ausschlaggebend ist ob nun beide Fenster oder nur eines davon angezeigt wird...

    Hoffe auf eine Antwort auf beide Fragen!
    Viele liebe Grüße
    Morx



  • http://doc.trolltech.com/4.4/signalsandslots.html

    Da stehts doch alles. Der 3. Parameter ist das Objekt dem der Slot gehört. Starte dein Programm doch am besten mal aus der Konsole, dann siehst du Fehlermeldungen wenn irgendwelche Slots oder Signale nicht existieren. Dann weißt du wo du suchen musst.

    [edit] unter windows brauchst du im .pro ein config += console



  • Frage 1:

    <a href= schrieb:

    die Qt-Doku">qApp
    A global pointer referring to the unique application object. It is equivalent to the pointer returned by the QCoreApplication::instance() function except that, in GUI applications, it is a pointer to a QApplication instance.

    die Signal-Slot-Syntax ist:

    connect ( Sender, Signal, Empfänger, Slot/Methode );
    

    Frage 2:

    jedes Widget, das keinem Parent zugewiesen wurde, erscheint als neues Fenster. Wird ein anderes Widget als parent angegeben, erscheint es innerhalb des parents


Anmelden zum Antworten