我在qt designer下编写了以下程序(书上的),由于编译的是时候有Q_OBJECT,所以,我就先用moc ×××.cpp -o ××.moc 生成了moc文件 ,然后用命令#include ×××.moc加入到×××.cpp文件中,然后用qmake ×××.pro命令 ,再用make时,出现了错误提示,请问我的这个编译步骤哪里出错了?
#include <qapplication.h>
#include <qwidget.h>
#include <qwidgetstack.h>
#include <qpushbutton.h>
#include <slots.moc>
class MyMainWindow:public QWidget
{
Q_OBJECT
public:
MyMainWindow();
private:
QWidgetStack *widgetstack;
QPushButton *b1,*b2,*cb1,*cb2;
public slots: //14
void showb1();
void showb2();
}; //第17行
void MyMainWindow::showb1()
{
widgetstack->raiseWidget(b1);
}
void MyMainWindow::showb2()
{
widgetstack->raiseWidget(b2);
}
MyMainWindow::MyMainWindow()
{ //27
setGeometry(100,100,150,130);
widgetstack=new QWidgetStack(this);
widgetstack->setGeometry(10,10,130,80);
b1=new QPushButton("Button 1",this);
b2=new QPushButton("Button 2",this);
widgetstack->addWidget(b1,1);
widgetstack->addWidget(b2,2);
cb1=new QPushButton("Raise b1",this);
cb1->setGeometry(10,100,60,20);
cb2=new QPushButton("Raise 2",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 a(argc,argv);
MyMainWindow w;
a.setMainWidget(&w);
w.show();
return a.exec();
}
slots.moc:17: syntax error before `::' token
slots.moc:22: syntax error before `::' token
slots.moc:23: `MyMainWindow' was not declared in this scope
slots.moc:23: parse error before `::' token
slots.moc:26: syntax error before `::' token
slots.moc:34: syntax error before `::' token
slots.moc:45: syntax error before `::' token
slots.moc:56: ISO C++ forbids declaration of `metaObj' with no type
slots.moc:64: invalid conversion from `QMetaObject*' to `int'
slots.moc:65: syntax error before `.' token
slots.moc:69: syntax error before `::' token
slots.moc:76: syntax error before `::' token
slots.moc:87: syntax error before `::' token
slots.moc:93: syntax error before `::' token
slots.moc:98: syntax error before `::' token
slots.moc:23: warning: `QMetaObjectCleanUp cleanUp_MyMainWindow(...)' declared
`static' but never defined