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

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

<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> 

提示错误找不到:web

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

顺便总结相关问题:windows

遇到的问题以下:框架

1.  因为Qt5将大部分桌面部件移到了Qt Widgets模块中,因此在.pro中要增长下面一行函数

QT += widgets学习

2. 程序中使用了OWC10,用到了ActiveQt,原来的作法是在.pro中加CONFIG += qaxcontainer,如今须要改为ui

QT += axcontainer编码

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

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

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代替.

相关文章
相关标签/搜索