Qt4 项目迁移到 Qt5 问题

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

1)编码问题

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

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

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

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

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

2)代码问题

问题一:

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

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

出现原因:

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

时间: 2024-10-13 00:32:04

Qt4 项目迁移到 Qt5 问题的相关文章

将某个Qt4项目升级到Qt5遇到的问题(13条方法)

本文转载自http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87 一.将某个QT4项目改成QT5遇到的问题 该Qt4项目以前是使用Qt4.7.4 MSVC2008开发的,因为使用到了OWC10(Office Web Components),使用MSVC编译器的话无法正常升级到Qt4.8.x和Qt5,于是将编译器转成了MinGW4.7,Qt升级到了4.8.4.今天Qt 5.0.1-MinGW预编译版本发布了,于是就拿它练手,将它升级到Qt

QT4项目升级到QT5遇到的问题和解决方法

QT4升级到QT5改动: PC部分: [改QTDIR变量] 在工程根目录下找到.user文件, 如InnoTabPlugin.vcxproj.user 修改指向你的QT5根目录: <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'"> <QTDIR>C:\qt\Qt5.2.1\5.2.1\msvc2010</QTDIR> </PropertyGro

用mingw静态编译Qt4.8.2和Qt5.1.1(需要修改不少源码)

因为一些乱七八糟的原因,我需要用mingw静态编译Qt4.8.2和Qt5.1.1.经历了一天的折腾之后,自觉编译一下Qt还是件颇为麻烦的事情,故将过程略作总结,以备不时之需. 首先,在编译之前,我需要下载mingw.qt-everywhere-opensource-src-4.8.2和qt-everywhere-opensource-src-5.1.1. 然后,准备开始编译了,当然先得把压缩包解压到一个合适的地方.我这里的路径是"C:\Qt"下面. 解压完毕后,先试着编译Qt4.8.2

jboss项目迁移至WebLogic12

1 weblogic 使用jtds-1.2.3.jar驱动链接MS SQL Server 2008的数据源配置 1.1 拷贝jtds-1.2.3.jar至D:\Oracle\Middleware\wlserver_12.1\server\lib目录下 1.2 编辑D:\Oracle\Middleware\wlserver_12.1\common\bin下的 commEnv.sh文件 找到WEBLOGIC_CLASSPATH=行加入标红内容${CLASSPATHSEP}${WL_HOME}/ser

eclipse JNI项目迁移android studio相关问题

最近在弄项目迁移,eclipse上的项目用到了JNI,需要转移到android studio,本来对JNI就不太懂,这下更麻烦了,遇到各种问题,过程痛苦不堪.不过终于做完了,把遇到问题记录下来,同时也能让遇到相关问题的人参考一下. 首先,我是把eclipse上的文件复制粘贴过来的,其实并不麻烦,主要是JNI,直接粘贴过来是不行的,而且在as上重新生成so文件也是不现实的,因为我jni知识太差了,只能勉强还用eclipse上的so文件,这样的话方便的多,只要把eclipse中的libs文件夹下的,

58HouseSearch项目迁移到asp.net core

前言 58HouseSearch这个项目原本是基于ASP.NET MVC 4写的,开发环境是Windows+VS2015,发布平台是linux+mono+jexus,这样看来整个项目基本已经满足跨平台的需求. 这样一来,本来我是没什么动力去做迁移的,好好的东西闲着没事干才迁移呢. 不过,这不国庆了么?穷人不是在家穷游天下么?所以…真的有点闲着没事干了. 迁移可行性探讨 项目迁移前,我们还是先来讨论一下迁移可行性.为嘛要进行可行性探讨呢?原因是.NET CORE是一个跨平台的框架,和上一代的.NE

eclipse项目迁移到android studio(图文最新版)

前言 最近Android studio(下文简称AS)官方发布了正式版,目前火得不行.个人认为主要是因为android是google自家的产品,AS也是他自己搞的IDE,以后的趋势android开发肯定会用AS,至于eclipse的adt插件是否继续更新就不可而知了.最近我也在android官网找了一下集成好的adt-bundle,但没有找到,可能是路径变了(搜索也没有找到)或者是真的为了支持AS就下架了.Github上现在也是一大堆的AS项目,所以这是个趋势啊. 之所以写本文是因为网上找的ec

Android Studio项目迁移小结

近来试着使用Android Studio.确实有些功能远远甩开eclipse几条街,可是临时用起来还不够熟练,先对这两天做项目迁移的一点心得做点总结. 这里说的项目迁移,是指从eclipse环境下的项目迁移到android studio.android studio是有提供从eclipse中导入项目的选项的.这个大家应该都非常easy找到,这里不贴图了.假设你的项目不包括不论什么第三方库,那么你android studio能够直接将你的项目转化成功,无须我们另外的改动.而假设你的项目包括第三方库

Android官方技术文档翻译——IntelliJ 项目迁移

本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-from-intellij-projects. 上一篇介绍了如何上一篇介绍了如何把一个Eclipse上的Android项目迁移到 Android Studio,这一篇继续介绍对 IntelliJ项目的迁移. 翻译不易,转载请注明CSDN博客上的出处: http