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!!!!