Qt经典出错信息之QApplication: No such file or directory

这个出错信息一般是新手在编译Qt4第一个应用"Hello,World"的时候,翻开Qt编程的第一个例子。都说很简单。

#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    QWidget *ww=new QWidget();
    ww->resize(300,200);
    ww->show();
    return app.exec();
}
一编译结果出现了上面这个错误,那叫一个郁闷。

其实花点心思照着提示,新手也是可以自己解决问题的。根据提示QApplication提示,应该是头文件没找到。那我们可以查看当前目录下Makefile里的环境变量INCPATH知道make应用是去哪里找头文件的。例如

./Makefile 文件部分内容

15 CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
16 INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I.
17 LINK          = g++

第16行里面的,对应的去查找/usr/include/qt4/QtGui/QApplication这个文件是否存在(一般是不存在,存在就不会出错了)。不存在QApplication文件的原因大致有两个

1)没有装Qt4的开发包 .

解决办法把开发包装上,比如ubuntu下就是在shell里执行sudo install libqt4-dev;Fedora/SUSe下是在shell里执行sudo yum install qt4-devel

2) Qt4的开发包装了,但是调用了Qt3的qmake

因为有的系统里既装了Qt3,又装了Qt4。如果调用了qt3的qmake,那么上头的INCPATH里的头文件路径也指向了Qt3,那么是找不到QApplication这个文件的。对应的解决方法就是调用Qt4安装路径下的qmake去生成Makefile,最好用全路径。我的机器Qt4中qmake安装路径是

zhu@ubuntu:~/test/widget$ dpkg -L qt4-qmake |grep qmake |grep bin
/usr/bin/qmake-qt4
/usr/share/qt4/bin/qmake

所以只要执行

/usr/bin/qmake-qt4;make 或者 /usr/share/qt4/bin/qmake:make

都能以Qt4的文件去编译这个最简单的Qt4应用。

Tags: , ,
This entry was posted on Saturday, June 6th, 2009 at 6:50 PM and is filed under Qt技术. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Responses to “Qt经典出错信息之QApplication: No such file or directory”

  1. Santhtony says:

    支持

  2. 风信子 says:

    我觉得问题在于没有在.pro文件中加入相应的(例如要用到SQL classes,就该在里面加入QT += sql
    )。我今天也遇到这个问题了,通过上面的操作能解决的,我是新手,是这么理解的。

Leave a Reply