Qt5.4中遇到找不到头文件<QApplication>等。。

从新学习Qt时,重装了Qt5.4,当运行Hello World例子时,遇到了下列的情况

<span style="font-size:18px;">#include <QApplication>
#include <QDialog>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc,argv);
    QDialog w;
    QLabel label(&w);
    label.setText("Hello World! i am QT");
    w.show();
    return a.exec();
}
</span>

提示错误找不到:

#include <QApplication>
#include <QDialog>
#include <QLabel>

一直纠结了快一天网上也找不到答案,摸索了很久,最后发现是出现原因:Qt5后不再用QtGui模块,而是使用QtWidgets模块。
所以在.pro文件中添加
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
完美解决问题。。。。

顺便总结相关问题:

遇到的问题如下:

1.  由于Qt5将大部分桌面部件移到了Qt Widgets模块中,所以在.pro中要增加下面一行

QT += widgets

2. 程序中使用了OWC10,用到了ActiveQt,原来的做法是在.pro中加CONFIG += qaxcontainer,现在需要改成

QT += axcontainer

当然了,原来的CONFIG += qaxcontainer也将去除

3. 为了充分使用C++11特性,在.pro中加下面一行

CONFIG += c++11

4. 在源文件中,凡是涉及到原QtGui中可视部件的,全要修改头文件引用,或者增加QtWidgets头文件,比如:

#include <QtGui/QPushButton>  要改成  #include <QPushButton>  或者  #include <QtWidgets/QPushButton>

在以前使用#include <QtGui>的地方,要加上 #include <QtWidgets>

5. 由于Qt5去除了QTextCodec::setCodecForCStrings()函数,所以在涉及到在cpp中直接写汉字的情况,有如下两种修改方法:

a)  如果以前的源文件编码是GBK的,则需要使用QString::fromLocal8Bit()函数将原来的汉字括起来;或者直接将源文件编码转换成UTF-8的(缺点是MSVC编译器不能方便的使用了)。我使用了使用QString::fromLocal8Bit()来调用的方式(当然了,另写便捷函数或宏来处理)

b) 如果以前的源文件编码是UTF-8的,则什么都不用动。

6. 以前使用QDesktopServices::storageLocation(QDesktopServices::xxxx)来获取一些系统目录,现在则要改成

QStandardPaths::writableLocation(QStandardPaths::xxxx)

7. 以前调用QFileDialog::getSaveFileName()时,如果在Windows下使用Native Dialog形式指定文件名,则能正常显示,如今Qt5不能正常显示文件名。所以将它的后两个参数加上了,即QFileDialog::getSaveFileName(xxx, xxx, xxx, xxx, 0, QFileDialog::DontUseNativeDialog),这样就正常了,只是它的对话框不是系统形式的,暂且将就吧。

8. 还有,Qt5解决了ui_qaxselect.h文件的问题。在Qt4时代,使用ActiveQt时,老提示没有这个文件,需要自己找到源代码手工uic qaxselect.ui > ui_qaxselect.h来生成一下,Qt5中则解决了该问题。

9.使用到打印相关的类,Qt5单独放到了QtPrintSupport模块中,所以得加头文件#include <QtPrintSupport>,在.pro中要加QT += printsupport

10. 使用到QWebPage等webkit相关可视部件的,Qt5单独放到了QtWebKitWidgets模块中,所以得加头文件#include <QtWebKitWidgets>,在.pro中要加QT += webkitwidgets

11. Qt4中的cleanlooks、plastique、cde、motif等主题样式没有,新加了个fusion,好吧,问题是我的一个项目框架使用的是cleanlooks主题样式然后加自定义样式表,这下可好,升级Qt5后,样子有的就与windowsvista或fusion不相符或有缺陷,得调整一下了。所以,对主题样式依赖比较严重的程序,要衡量一下是否要升级到Qt5了。

12. .pro文件中的TARGET在Qt4(qmake v2)中是可以不填写的,那么它就从自动采用.pro文件名字,而在Qt5中(qmake v3)这个TARGET不可不写。

13. Q_WS_XX的宏不可用了,使用Q_OS_XX代替.

时间: 2024-11-09 02:17:08

Qt5.4中遇到找不到头文件<QApplication>等。。的相关文章

编译C++,找不到头文件(fatal error: string: No such file or directory)

在androidproject中编译C++时,找不到头文件,报错例如以下: fatal error: string: No such file or directory 解决该问题须要在Android.mk文件里: LOCAL_C_INCLUDES :=  \                 bionic \                 external/stlport/stlport 编译C++,找不到头文件(fatal error: string: No such file or dir

libxml2.dylb 导致&lt;libxml/tree.h&gt; 老是找不到头文件

添加了libxml2.dylb的framework ,结果还是引用不了<libxml/tree.h>,  老是提示找不到头文件. 这个问题其实比较容易解决,但是XCode的版本问题确实让开发者头疼. 在Xcode4,2之后,可以在添加了libxml2.dylb之后,点击左上角的project,然后进行Build Settings(这里不管是Project还是targets都行),找到Search Paths选项卡,其下有Header Search Paths条目,双击debug选项,添加/us

使用CocoaPods后找不到头文件

使用CocoaPods后,发现总是找不到头文件 在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCROOT} 再将后面参数改为recursive

pod JONSKit.h MBProgress.h 找不到头文件,怎么办?

这时你看项目pod部分,多了JSONKit库.好了,第三方库就这么神奇的加进来. 头文件路径 那试试看使用JONSKit.h,在ViewController.m里引用下.找不到头文件,怎么办?还没设置头文件的目录,在项目的Target的里设置一下: 如下图所示,输入${SRCROOT}  后面选上recursive.

CocoaPods 找不到头文件

"${PODS_ROOT}/BuildHeaders" 那试试看使用JONSKit.h,在ViewController.m里引用下.找不到头文件,怎么办?还没设置头文件的目录,在项目的Target的里设置一下:如下图所示,输入${PODS_ROOT}/BuildHeaders 如何这个不好使那就尝试下图上的那个! 后面选上recursive.

10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)

ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢..于是百度到了. . . 遇到这个问题,就在所在的文件夹 Application.mk 文件里.加入: APP_STL := gnustl_static 就能够找到标准库了! 最后知道真相的我.眼泪掉下来啊!

#include &lt;sys/socket.h&gt;找不到头文件

ubuntu下socket编程涉及到头文件sys/socket.h 和sys/types.h.我是用的codeblocks编辑器,当我想查看socket,h头文件时编辑器提示找不到头文件. 我就想可能是没有设置codeblocks头文件的搜索路径.好吧,那首先就找找这个文件藏在哪里吧 <span style="font-size:12px;">find / -name socket.h -print 或者locate sys/socket.h</span> 结果

找不到头文件

无法打开包括文件:“opencv2/core/core_c.h”: No such file or directory 解决办法,找到头文件对应的位置,添加目录进去 添加包含(include)文件目录 方法 1:[解决方案资源管理器]“项目->属性->配置属性->C/C++->常规->附加包含目录” 方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录

在 ubuntu 下编译 android 找不到头文件问题解决

在 ubuntu 下编译 android 的时候, 发现编译错误, 有些头文件找不到, 如: 致命错误: alsa/asoundlib.h: 没有那个文件或目录 网上搜索了一下, 原因是某些库没安装导致. 可以使用 apt-file 查看该头文件在什么库中, 找到相应的库, 安装即可. 安装 apt-file : sudo apt-get install apt-file 查找头文件: apt-file search 头文件, 如: apt-file search alsa/asoundlib.