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

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

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

  1. #include <QApplication>
  2. #include <QPushButton>
  3. int main(int argc, char* argv[]){
  4. QApplication app(argc,argv);
  5. QPushButton pushButton(QObject::tr("Hello Qt!"));
  6. pushButton.show();
  7. QObject::connect(&pushButton, SIGNAL(clicked()), &app, SLOT(quit()));
  8. return app.exec();
  9. }

  1. qmake -project //生成.pro文件
  2. qmake HelloQt5ByHand.pro //根据.pro文件生成Makefile文件
  3. mingw32-make //根据Makefile文件编译链接生成 可执行文件


之后提示出错: fatal error: QApplication: No such file or directory

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


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

  • 法1:

  1. #include <QtWidgets/QApplication>
  2. #include <QtWidgets/QPushButton>

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

  1. #include <QApplication>
  2. #include <QPushButton>

而在.pro文件中添加

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets


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

  1. QT += core gui
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

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

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

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

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

  1. QT += core gui
  2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

即可完美解决类似QApplication: No such file or directory 这种新旧版本兼容问题。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值