SIGNAL destroyed() Debugger Fehlermeldung



  • Hallo zusammen.

    Ich beziehe mich auf folgendes:

    void QObject::destroyed ( QObject * obj = 0 )
    

    Ich erzeuge aus einem MainWindow einen Dialog und setzte dessen Attribut wie folgt:

    myDialog.cpp

    setAttribute(Qt::WA_DeleteOnClose);
    

    Jetzt wird doch das Signal destroyed gesendet, welches ich im MainWindow folgendermaßen verarbeiten möchte:

    MainWindow.cpp

    ...
    connect(auswahlDialog, SIGNAL(destroyed()), this, test());
     }
    
     void MainWindow::test(void)
     {
     ;
     }
    

    Doch debugger bringt folgende Fehlermeldung:
    [quote]
    C:/Qt/SBOX/SBOX/mainwindow.cpp:97: error: invalid use of void expression
    [/quote]
    und verweist auf die connect(...) Zeile.

    Was ist da falsch? Wie ist es richtig? Vermute ich fange/rufe das Signal destroyed() flasch ab/auf. Muss ich da noch was übergeben?

    Doku sagt ja:
    [quote]
    void QObject::destroyed ( QObject * obj = 0 ) [signal]

    This signal is emitted immediately before the object obj is destroyed, and can not be blocked.

    All the objects's children are destroyed immediately after this signal is emitted.
    [/quote]

    Aber das verstehe ich nicht ganz. Muss ich destroyed() myDialog übergeben? Danke für Antworten

    LG



  • Jetzt wird doch das Signal destroyed gesendet, welches ich im MainWindow folgendermaßen verarbeiten möchte:

    connect(auswahlDialog, SIGNAL(destroyed()), this, test());
    

    C:/Qt/SBOX/SBOX/mainwindow.cpp:97: error: invalid use of void expression

    connect(auswahlDialog, SIGNAL(destroyed()), this, SLOT(test()));
    

    Ausserdem muss die Methode "test" als slot deklariert sein.



  • Hallo hellihjb ,

    Die Methode "test" ist in der MainWindow.h wie folgt deklariert

    public slots:
        void test(void);
    

    Aber trotzdem kommt die genannte Fehlermeldung. Hmmm, was will mir denn der Kompiler mit VOID sagen???



  • [quote="blitzgeist"]Hallo hellihjb ,

    Die Methode "test" ist in der MainWindow.h wie folgt deklariert

    public slots:
        void test(void);
    

    Aber trotzdem kommt die genannte Fehlermeldung. Hmmm, was will mir denn der Kompiler mit VOID sagen???[/quote]

    Dir fehlt noch das SLOT(...) um das vierte Argument.



  • Hey jaf,

    vielen Danke! Da hatte ich wohl echt Tomaten auf den Augen :))) Logisch, jetzt geht's. 👍


Anmelden zum Antworten