QApplication: No such file or directory 完美解决方案

作为一个Newbie,来到Qt5的世界,面对第一个Hello Qt程序,就栽了一跟头,是因为和Qt4相比,Qt5的模块结构发生了变化。

程序很简单,就是显示一个简单的基于对话框的Hello Qt程序。界面上有一个按钮,按钮上面的字符是"Hello Qt!",单击该按钮后,对话框关闭,程序退出。

#include <QApplication>#include <QPushButton>int main(int argc, char* argv[]){QApplication app(argc,argv);QPushButton pushButton(QObject::tr("Hello Qt!"));pushButton.show();QObject::connect(&pushButton, SIGNAL(clicked()), &app, SLOT(quit()));return app.exec();}qmake -projectqmake make之后提示出错:fatal error: QApplication: No such file or directory

由于Qt5将大部分桌面部件移到了Qt Widgets模块中,即QApplication已经从原来的<QtGui/QApplication>移动到<QtWidgets/QApplication>了。从下图也可以看出来。

所以为解决找不到QApplication文件 这个问题,有两种方法:

法1:

#include <QtWidgets/QApplication>#include <QtWidgets/QPushButton>

法2:也可以保持原代码不变,即保持

#include <QApplication>#include <QPushButton>而在.pro文件中添加

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

之所以这样加,是国为看了一下官方的Qt5的Demo,,发现里面有这样一句:

QT+= core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets个人感觉最佳的风格是方法2,因为这保持了老版本和新版本风格的统一和兼容。这不但提高了通用性,还简化了我们的记忆:我们并不需要知道某个类是属于哪个模块的。只管交给qmake来处理就可以了。

================================================================

故根据上述分析,得出的解决方法如下:

对于所有Qt5写的代码,手动修改.pro文件,添加

QT+= core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets即可完美解决类似QApplication: No such file or directory 这种新旧版本兼容问题。

最后附上一张我的第一个Qt程序:

又或者是后天的,我们不断学习,努力进取的路途中辛苦寻到的武器。

QApplication: No such file or directory 完美解决方案

相关文章:

你感兴趣的文章:

标签云: