我是按照QT里的参考文档写的下面的内容:
#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();
}
用qmake 生成pro文件,再用qmake生成makefile,然后make编译。
这个过程中程序没有报任何错误。
当我运行可执行文件的时候,就会报错
[root@localhost third]# qmake -project
[root@localhost third]# qmake
[root@localhost third]# make
g++ -c -pipe -Wall -W -O2 -DQT_NO_DEBUG -I/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/linux-g++ -I. -I. -I/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include -o main.o main.cpp
g++ -Wl,-rpath,/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -o third main.o -L/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
[root@localhost third]# ./third
段错误
我用gdb调试了一下,它显示的错误信息是:
Program received signal SIGSEGV, Segmentation fault.
0x0087340a in QWidget::internalSetGeometry ()
from /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib/libqt.so.2
我查看了一下说internalSetGeometry是qWidget的私有成员。这里出错时说我在程序里SetGeometry在设置的时候出现指代不清的问题了吗?
还是说设置的时候出现了溢出?还是说libqt.so.2这个库出现了问题?
真的是很诚心的向大家求教。拜托了。
PS一下:今天又进步了一点点知道用gdb调试了。
[ 此帖被superrui621在2009-11-26 12:33重新编辑 ]