HILFE mein programm laesst sich(schonwieder)nicht kompilieren



  • HI Leute!

    Ich habe schon wieder ein kleines Problem mit einem stueck code von mir:

    #include <qapplication.h>
    #include <qpushbutton.h>
    #include <qlineedit.h>
    #include <qlabel.h>
    #include <qtextedit.h>
    
    class LoadUrl : public QWidget{
        Q_OBJECT
    public:
       /*konstruktor*/
       LoadUrl(){
          initializer_urlEingabeelemente();
       }//end konstruktor
    
       void initializer_urlEingabeelemente(){
          /*zeichnen des labels wo "URL:" drinnensteht*/
          QLabel *label_urlWeiser = new QLabel(this);
          label_urlWeiser -> setText("URL:");
          label_urlWeiser -> setGeometry(10, 20, 61, 20);
          /*zeichnen des textfeldes fuer die eingabe der URL*/
          QLineEdit *lineEdit_urlEingabe = new QLineEdit(this);
          lineEdit_urlEingabe -> setGeometry(40, 20, 860, 22);
          /*zeichnen den buttons fuer das laden der URL*/
          QPushButton *button_loadUrl = new QPushButton("load..." ,this);
          button_loadUrl -> setGeometry(907, 16, 50, 30);
          /*zeichnen des textEdits fuer den html text
          (wahrscheinliche veraenderung waenn weiter im QT-Buch)*/
          QTextEdit *textEdit_htmlAnzeige = new QTextEdit(this);
          textEdit_htmlAnzeige -> setGeometry(10, 50, 940, 580);
       }//end initializer_urlEingabeelemente
    public slots:
       void ladeWebSite(char* url){
       }//end ladeWebSite
    };// end LoadUrl
    
    int main(int argc, char *argv[]){
       QApplication badCat(argc, argv);
       LoadUrl *widget_badCat = new LoadUrl();
       widget_badCat -> setGeometry(100, 100, 960, 640);
       widget_badCat -> setCaption("badCat - iNet 8r0wZeR");
    
       badCat.setMainWidget(widget_badCat);
       widget_badCat -> show();
       return badCat.exec();
    }//end main
    

    dazu habe ich folgende projektdatei:

    SOURCES = badCat.cpp
    TARGET = badCAT
    

    und immer waenn ich mein programm compilieren will kommt folgende meldung

    [badbackslash@localhost badCAT]$ qmake && make
    g++  -o badCAT badCat.o    -L/usr/lib/qt-3.3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
    badCat.o(.text+0x5b): In function `main':
    /home/rsickinger/badCAT/badCat.cpp:11: undefined reference to `vtable for LoadUrl'
    badCat.o(.text+0x62):/home/rsickinger/badCAT/badCat.cpp:11: undefined reference to `vtable for LoadUrl'
    collect2: ld gab 1 als Ende-Status zurück
    make: *** [badCAT] Fehler 1
    [badbackslash@localhost badCAT]$
    

    das komische ist waenn ich das mit den slot wegkommentiere funzelts wunderbar:

    #include <qapplication.h>
    #include <qpushbutton.h>
    #include <qlineedit.h>
    #include <qlabel.h>
    #include <qtextedit.h>
    
    class LoadUrl : public QWidget{
    //     Q_OBJECT
    public:
       /*konstruktor*/
       LoadUrl(){
          initializer_urlEingabeelemente();
       }//end konstruktor
    
       void initializer_urlEingabeelemente(){
          /*zeichnen des labels wo "URL:" drinnensteht*/
          QLabel *label_urlWeiser = new QLabel(this);
          label_urlWeiser -> setText("URL:");
          label_urlWeiser -> setGeometry(10, 20, 61, 20);
          /*zeichnen des textfeldes fuer die eingabe der URL*/
          QLineEdit *lineEdit_urlEingabe = new QLineEdit(this);
          lineEdit_urlEingabe -> setGeometry(40, 20, 860, 22);
          /*zeichnen den buttons fuer das laden der URL*/
          QPushButton *button_loadUrl = new QPushButton("load..." ,this);
          button_loadUrl -> setGeometry(907, 16, 50, 30);
          /*zeichnen des textEdits fuer den html text
          (wahrscheinliche veraenderung waenn weiter im QT-Buch)*/
          QTextEdit *textEdit_htmlAnzeige = new QTextEdit(this);
          textEdit_htmlAnzeige -> setGeometry(10, 50, 940, 580);
       }//end initializer_urlEingabeelemente
    // public slots:
    //    void ladeWebSite(char* url){
    //    }//end ladeWebSite
    };// end LoadUrl
    
    int main(int argc, char *argv[]){
       QApplication badCat(argc, argv);
       LoadUrl *widget_badCat = new LoadUrl();
       widget_badCat -> setGeometry(100, 100, 960, 640);
       widget_badCat -> setCaption("badCat - iNet 8r0wZeR");
    
       badCat.setMainWidget(widget_badCat);
       widget_badCat -> show();
       return badCat.exec();
    }//end main
    

    wiegesagt hiermit geht es?

    worann kann das liegen? am konstruktor??
    ich kann mir das nicht mehr erklaeren?

    mfg
    --linuxuser--



  • Hast du den moc schon drüber gejagt?



  • Hallo!

    ich habe jetz eine moc datei moc_badCat.cpp mittels

    moc badCat.cpp > moc_badCat.cpp
    

    erstellt und mittels

    #include "moc_badCat.cpp"
    

    eingebunden nun bekomme ich folgende fehlermaeldungen:

    [badbackslash@localhost badCAT]$ make
    g++ -c -pipe -Wall -W -O2 -g -pipe -m32 -march=i386 -mtune=pentium4  -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default -I. -I/usr/lib/qt-3.3/include -o badCat.o badCat.cpp
    In file included from badCat.cpp:6:
    moc_badCat.cpp:20: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:21: Fehler: non-Elementfunktion »const char* className()« kann nicht den Methodenqualifizierer »const« haben
    moc_badCat.cpp:25: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:26: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:26: Fehler: `staticMetaObject' was not declared in this scope
    moc_badCat.cpp:29: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:37: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:48: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp:73: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp: In function `void* qt_cast(const char*)':
    moc_badCat.cpp:76: Fehler: ungültige Verwendung von »this« in Nicht-Element-Funktion
    moc_badCat.cpp:77: Fehler: Elementfunktion »virtual void* QWidget::qt_cast(const char*)« kann nicht ohne Objekt aufgerufen werden
    moc_badCat.cpp: At global scope:
    moc_badCat.cpp:80: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp: In function `bool qt_invoke(int, QUObject*)':
    moc_badCat.cpp:83: Fehler: `ladeWebSite' undeclared (first use this function)
    moc_badCat.cpp:83: Fehler: (Each undeclared identifier is reported only once for each function it appears in.)
    moc_badCat.cpp:85: Fehler: Elementfunktion »virtual bool QWidget::qt_invoke(int, QUObject*)« kann nicht ohne Objekt aufgerufen werden
    moc_badCat.cpp: At global scope:
    moc_badCat.cpp:90: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp: In function `bool qt_emit(int, QUObject*)':
    moc_badCat.cpp:92: Fehler: Elementfunktion »virtual bool QWidget::qt_emit(int, QUObject*)« kann nicht ohne Objekt aufgerufen werden
    moc_badCat.cpp: At global scope:
    moc_badCat.cpp:96: Fehler: »LoadUrl« wurde nicht deklariert
    moc_badCat.cpp: In function `bool qt_property(int, int, QVariant*)':
    moc_badCat.cpp:98: Fehler: Elementfunktion »virtual bool QWidget::qt_property(int, int, QVariant*)« kann nicht ohne Objekt aufgerufen werden
    moc_badCat.cpp: At global scope:
    moc_badCat.cpp:101: Fehler: »LoadUrl« wurde nicht deklariert
    badCat.cpp:46:13: Warnung: no newline at end of file
    make: *** [badCat.o] Fehler 1
    

    ich kann das nicht verstehen irgendwie gibt es noch ein detail in dem signal slot konzept was ich noch nicht kenne/uebersehe 😞

    waere super waenn mich wer darauf hinweisen koennte ⚠
    mfg
    --linuxuser--

    //aber ich habe mir gedacht waenn man sich mit qmake das Makefile erstellen laesst dann muss man das mit dem MOC nicht machen!?!



  • @evelissimo DANKE DEIN TIPP MIT dem auslagern hat gefunzt
    JUHUU ich bin gluecklich!!!!


Anmelden zum Antworten