QT中遇到的怪问题
我刚做QT不久。
最近在按照教材学习。
但是我发现了一个很奇怪的问题
只要遇到在QT程序中需要使用类的继承的时候,系统就会报错显示segfault
但是我如果不采用类的继承,而是把所有东西都放在主程序中就会运行顺畅。
我不知道只是因为什么,有哪位大侠能为我解答一下吗?
下面是一个使用类继承运行不了和一个没有使用类继承运行成功的程序:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
class MyWidget : public QWidget
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};
MyWidget::MyWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
setMinimumSize( 200, 120 );
setMaximumSize( 200, 120 );
QPushButton *quit = new QPushButton( "Quit", this, "quit" );
quit->setGeometry( 62, 40, 75, 30 );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );
connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
w.setGeometry( 100, 100, 200, 120 );
a.setMainWidget( &w );
w.show();
return a.exec();
}
上面这个程序由于使用类继承,结果运行不了。显示段错误就是segfault.
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qwidget.h>
int main( int argc, char **argv )
{
QApplication app( argc, argv );
QWidget w;
w.setMinimumSize(200,120);
w.setMaximumSize(200,120);
QPushButton quit("Quit",&w);
quit.setGeometry(62, 40, 75, 30);
QObject::connect(&quit,SIGNAL(clicked()),&app,SLOT(quit()));
app.setMainWidget( &w );
w.show();
return app.exec();
}
这个程序师我调整了之后没有采用类继承,结果运行成功。