• 6356阅读
  • 2回复

编译时提示vtable错,已经加Q_OBJECT [复制链接]

上一主题 下一主题
离线marsteel
 
只看楼主 倒序阅读 楼主  发表于: 2007-10-22
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
写了一个小程序,点击一次按钮使LCD自增1
  1. #include<QApplication>
  2. #include<QtGui>
  3. class MyWidget: public QWidget
  4. {
  5.     Q_OBJECT
  6. public:
  7.     MyWidget(QWidget *parent=0);
  8.     int vote;
  9. public slots:
  10.         void addVote();
  11. private:
  12.     QLCDNumber *lcd;
  13.     QPushButton *btnVote;
  14. };
  15. MyWidget::MyWidget(QWidget *parent):QWidget(parent)
  16. {
  17.     int vote=0;
  18.     QLCDNumber *lcd=new QLCDNumber(2);
  19.     QPushButton *btnVote=new QPushButton("Vote");
  20.     lcd->display(vote);
  21.     QObject::connect(btnVote,SIGNAL(clicked()),this,SLOT(addVote()));
  22.     QVBoxLayout *layout=new QVBoxLayout;
  23.     layout->addWidget(lcd);
  24.     layout->addWidget(btnVote);
  25.     setLayout(layout);
  26. }
  27. void MyWidget::addVote()
  28. {
  29.     vote++;
  30. }
  31. int main(int argc,char *argv[])
  32. {
  33.     QApplication app(argc,argv);
  34.     MyWidget WidgetVote;
  35.     WidgetVote.show();
  36.     return app.exec();
  37. }

编译qmake -project,qmake,make后提示
  1. gary@gary-laptop:~/qtmine$ make
  2. g++  -o qtmine main.o    -L/usr/lib -lQtGui -lQtCore -lpthread
  3. main.o: In function `MyWidget':
  4. /home/gary/qtmine/main.cpp:18: undefined reference to `vtable for MyWidget'
  5. /home/gary/qtmine/main.cpp:18: undefined reference to `vtable for MyWidget'
  6. /home/gary/qtmine/main.cpp:18: undefined reference to `vtable for MyWidget'
  7. /home/gary/qtmine/main.cpp:18: undefined reference to `vtable for MyWidget'
  8. main.o: In function `~MyWidget':
  9. /home/gary/qtmine/main.cpp:6: undefined reference to `vtable for MyWidget'
  10. main.o:/home/gary/qtmine/main.cpp:6: more undefined references to `vtable for MyWidget' follow
  11. collect2: ld 返回 1
  12. make: *** [qtmine] 错误 1
  13. gary@gary-laptop:~/qtmine$


网上搜索后说出现vtable的错误似乎都和moc有关,但我在类声明里面加了Q_OBJECT,还是出现错误,请教高手指点,谢谢。
To infinity and beyond
离线XChinux

只看该作者 1楼 发表于: 2007-10-22
把类的定义和实现分别放到.h和.cpp文件中吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线marsteel
只看该作者 2楼 发表于: 2007-10-23
引用第1楼XChinux于2007-10-22 23:50发表的  :
把类的定义和实现分别放到.h和.cpp文件中吧。

果然,谢谢!
To infinity and beyond
快速回复
限100 字节
 
上一个 下一个