Problem mit Qt Connections



  • Hi,
    ich hab ein Problem mit meinem Qt-Programm:
    ich wollte eigene slots schreiben damit button1, button2 bestimmte aktionen ausführen, aber ich erhalte beim linken (nicht beim kompilieren) eine fehlermeldung!

    hier kommt der quellcode und die fehlermeldung:

    *******************************************
    Start mywidget.h
    *******************************************

    #ifndef MYWIDGET_H
    #define MYWIDGET_H

    #include <qobject.h>
    #include <qwidget.h>
    #include <qlayout.h>
    #include <qpushbutton.h>

    class MyWidget : public QWidget
    {
    Q_OBJECT
    public:
    MyWidget();

    public slots:
    void mySlot1();
    void mySlot2();

    private:
    QPushButton *button1;
    QPushButton *button2;
    QVBoxLayout *layout;
    };

    #endif // MYWIDGET_H

    ******************************************
    End mywidget.h
    ******************************************

    ******************************************
    Start main.cpp
    ******************************************
    #include "MyWidget.h"
    #include <qapplication.h>
    #include <qpushbutton.h>

    MyWidget::MyWidget()
    :QWidget()
    {
    layout = new QVBoxLayout(this, 0, 0, "layout");
    button1 = new QPushButton("button1", this, "button1");
    button2 = new QPushButton("button2", this, "button2");

    this->setName("MyWidget");
    this->resize(150, 50);
    layout->addWidget(button1);
    layout->addWidget(button2);

    connect(button1, SIGNAL(clicked()), this, SLOT(mySlot1()) );
    connect(button2, SIGNAL(clicked()), this, SLOT(mySlot2()) );
    }

    int main(int argc, char** argv)
    {
    // declaration
    QApplication qApp(argc, argv);
    MyWidget myWdg;

    // start prog
    qApp.setMainWidget(&myWdg);
    myWdg.show();
    return qApp.exec();
    }

    ***********************************************
    End main.cpp
    ***********************************************

    ***********************************************
    Error-Message:
    ***********************************************
    Kompilierung läuft...
    moc_mywidget.cpp
    Linker-Vorgang läuft...
    moc_mywidget.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall MyWidget::mySlot2(void)" (?mySlot2@MyWidget@@QAEXXZ)
    moc_mywidget.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall MyWidget::mySlot1(void)" (?mySlot1@MyWidget@@QAEXXZ)
    Debug/qtTest.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    qtTest.exe - 3 Fehler, 0 Warnung(en)
    ***********************************************

    die datei moc_mywidget.cpp habe ich manuell mit dem moc erzeugt und dann in mein projekt importiert...

    kann mir da jemand helfen?

    danke im voraus
    cu Errraddicator



  • hat sich erledigt, ich hatte vergessen die funktion mySlot1() und mySlot2() zu definieren..., ich hatte nämlich nur den Prototypen deklariert aber nicht die Funktion an sich...

    trotzdem danke
    cu Errraddicator


Anmelden zum Antworten