Qt 4 项目迁移到 Qt 5 问题

该文章原创于Qter开源社区(www.qter.org),作者 yafeilinux,转载请注明出处!


1)编码问题

我们打开现有的 Qt 4 版本的 helloworld 源码目录(此代码下载请点此链接),然后将 helloworld.pro 文件拖入到 Qt Creator 中打开该项目,这时会跳转到项目模式,进行项目配置,也就是选择构建套件。这里默认使用桌面版的 Qt 5.2 即可,如下图所示,然后点击 ConfigureProject 按钮。

Qt 4 项目迁移到 Qt 5 问题_第1张图片


下面我们打开项目文件列表中的 helloDialog.cpp 文件,因为这里有一行中文注释,所以出现了“错误:无法用 UTF-8 -编码解码 hellodialog.cpp。无法编辑。”的错误提示,这是因为该文件不是使用 UTF-8 编码的,而其中的中文无法使用 UTF-8 自动解码造成的。为了使中文可以正常显示,并且以后不再出现该错误提示,我们可以通过下面的方法手动来将文件设置为 UTF-8 编码。


首先点击错误提示后面的选择编码按钮(也可以使用“编辑”->“选择编码”菜单项),然后选择 GB18030/gb18030/ibm-1392/windows-54936 一项,最后点击按编码重新载入按钮。如下图所示。



 完成后发现已经可以正常显示中文了,但是如果关闭项目重新打开,中文依然无法正常显示。所以我们还需要继续设置。再次选择“编辑”->“选择编码”菜单项,然后选择 UTF-8 一项,点击按编码保存按钮。如下图所示。

Qt 4 项目迁移到 Qt 5 问题_第2张图片


这样设置完后,文件已经使用 UTF-8 进行保存了,后面再打开也不会出现编码错误了。


2)代码问题

问题一:

下面先直接运行程序,这时会在问题面板出现 QtGui/QApplication: No such file or directory的问题提示。如下图所示。



我们双击该问题,定位到出错位置,这时跳转到了 main.cpp 文件中,可以看到第一个头文件包含找不到路径。如下图所示。

Qt 4 项目迁移到 Qt 5 问题_第3张图片


出现原因:

Qt5 里不再用 QtGui 模块,而是使用 QtWidgets 模块。

解决方法:

1)头文件包含全部不需要 QtGui,如将 main.cpp 文件中的 #include <QtGui/QApplication> 修改为 #include <QApplication>

2)在 .pro 项目文件中添加:greaterThan(QT_MAJOR_VERSION, 4): QT += widgets(在高于 Qt4 的版本中要添加 QT += widgets,也就是说要使用 widgets 模块),实际上,直接写 QT += widgets 即可,不需要加:“greaterThan(QT_MAJOR_VERSION, 4):”。


问题二:Qt 5 使用原来的 QT4项目时 QWebView 、QWebFrame 等类无法编译通过。

出现原因:

QWebView 、QWebFrame、QWebPage、QWebInspector 等这些类被单独移到了 QtWebKitWidgets 模块,不再在 QtWebKit 模块当中;而 QWebHistory 等类仍然保留在 QtWebkit 模块中。

解决方法:

使用到 QWebPage 等 webkit 相关可视部件的,Qt5 单独放到了QtWebKitWidgets 模块中,所以在使用了QWebPage类的地方:

1)在 *.pro 中要加 QT += webkitwidgets
2)在 *.cpp 中加头文件:#include <QtWebKitWidgets/QWebPage>  或者 #include<QWebPage>


参考资料:

http://bbs.qter.org/

http://blog.csdn.net/libaineu2004


你可能感兴趣的:(qt,QT4,qt5)