我按照<<24小时学通QT>>学习,其中在7.2.4有一段关于自定义SLOT的代码,我按照他的代码写下来,编译,但是出现了错误,源码如下:
#include <qapplication.h>
#include <qwidget.h>
#include <qwidgetstack.h>
#include <qpushbutton.h>
class MyMainWindow : public QWidget
{
Q_OBJECT
public:
MyMainWindow();
private:
QWidgetStack *wstack;
QPushButton *b1,*b2,*cb1,*cb2;
public slots:
void showb1(void );
void showb2();
};
void MyMainWindow::showb1()
{
wstack->raiseWidget(b1);
}
void MyMainWindow::showb2()
{
wstack->raiseWidget(b2);
}
MyMainWindow::MyMainWindow()
{
setGeometry(100,100,150,130);
wstack=new QWidgetStack(this);
wstack->setGeometry(10,10,130,80);
b1=new QPushButton("button 1",this);
b2=new QPushButton("button 2",this);
wstack->addWidget(b1,1);
wstack->addWidget(b2,2);
cb1=new QPushButton("Raise b1",this);
cb1->setGeometry(10,100,60,20);
cb2=new QPushButton("Raise b2",this);
cb2->setGeometry(80,100,60,20);
connect(cb1,SIGNAL(clicked()),this,SLOT(showb1()));
connect(cb2,SIGNAL(clicked()),this,SLOT(showb2()));
}
int main(int argc, char **argv)
{
QApplication app(argc,argv);
MyMainWindow mywin;
mywin.show();
return app.exec();
}
qmake -project
qmake
make
错误如下:
g++ -c -pipe -Wall -W -O2 -march=i386 -mcpu=i686 -g -DGLX_GLXEXT_LEGACY -fno-use-cxa-atexit -fno-exceptions -DQT_NO_DEBUG -I/usr/lib/qt-3.1/mkspecs/default -I. -I. -I/usr/lib/qt-3.1/include -o 4.o 4.cpp
g++ -o 4 4.o -L/usr/lib/qt-3.1/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
4.o(.text+0x71): In function `MyMainWindow::MyMainWindow[not-in-charge]()':
/root/Desktop/Qt learn/4/4.cpp:30: undefined reference to `vtable for MyMainWindow'
4.o(.text+0x78):/root/Desktop/Qt learn/4/4.cpp:30: undefined reference to `vtable for MyMainWindow'
4.o(.text+0x381): In function `MyMainWindow::MyMainWindow[in-charge]()':
/root/Desktop/Qt learn/4/4.cpp:30: undefined reference to `vtable for MyMainWindow'
4.o(.text+0x388):/root/Desktop/Qt learn/4/4.cpp:30: undefined reference to `vtable for MyMainWindow'
4.o(.text+0x6ad): In function `main':
/root/Desktop/Qt learn/4/4.cpp:55: undefined reference to `vtable for MyMainWindow'
4.o(.text+0x6b4):/root/Desktop/Qt learn/4/4.cpp:55: more undefined references to `vtable for MyMainWindow' follow
collect2: ld returned 1 exit status
make: *** [4] Error 1
[ 此贴被lcc_zjut在2006-02-27 13:08重新编辑 ]