Qt5推出一段时间了,经过了试用,虽然还存在一些问题,比如Designer 缺少 WebView 和 ActiveQt 的UI工具,此外 WebKit 的 Release 版本似乎和Visual-Studio 2012 Express 编译器不太吃劲,老是报运行时错误——好在目前用到的模块都测试过了。

1,修改路径系统。Qt4 的 QtGUI下很多类被独立到widgets模块里了,为了提高兼容性,把这些include 的抬头全去了,直接是 #include<qapplication> ,这样,通过 Qt += 模块名,即可弥合4,5之间的差异。

2,添加一个宏替换,Qt ::WFlag变成 Qt5 的 WindowFlags, 小问题。

3,插件系统的修改。 新的 Q_PLUGIN_METADATA 在插件实现类的首部,代替了以往在 CPP里Export 的模式,对迁移没有影响。加入编译预处理宏,判断一下标志,决定采用哪一种方法。

4,字符串处理方式问题。目前,由于项目对中文、英文和国际化的使用较为规范,没有遇到乱码的问题,可以认为兼容性较好。

5,第三方依赖性

如果引用了 PostgreSQL 或 MySQL的Sql 连接插件,注意把 libpq 和  libmysql相关的库文件拷贝到可执行文件所在文件夹下,而不是 plugins 所在的文件夹,否则尽管可以枚举到驱动,但连接可能失败。如果引用了OCI的插件,注意不要拷贝oci.dll 到发布文件夹,在某些情形下,会导致连接失败。而是利用发布目的机器路径系统上的oracle 连接实例来获取依赖。

6、发布程序

Qt5的plugins 文件夹中的内容,不要忘记一起发布。

总结:   经过测试, Qt4 到 5 的转换比 Qt3->4 要平滑很多,一般的项目均可以快速迁移。

-------------------------------

顺便吐糟,编译Qt5对资源的消耗大大出乎意料,特别是那个 Webkit,Link时直接硬盘 100%狂闪,虚拟内存撑了N大,真是后悔内存没多买一条。内存碎片化估计也很严重,编译到outof mem后,重启系统接着来才成。在GCC下也是,Mac 没试过。

以目前Qt代码量来看,再过几年没有4G的内存根本就没法编译。这样想来应该不止Qt,恐怕以后很多大一点的C++项目都是如此吧——雪球滚大了,不停的要兼容旧版、加入新功能,而且重构对很多项目来说是不可能的,只能越滚越大。

http://blog.csdn.net/goldenhawking/article/details/8497205

迁移 Qt4 至 Qt5 的几个主要环节(数据库插件别拷错了地方)的更多相关文章

  1. 在VS2010 中兼容Qt4和Qt5

    1,同时安装Qt4和Qt5 Qt_add,然后在 2. 如果之前的项目使用Qt4编写的,如果新添加新的类和ui的话,一定要选择Qt Add_in 1.1.11,不然就无法生成moc文件,随便选择 Ch ...

  2. Qt4升级Qt5注意问题

    Qt4升级Qt5注意问题 Qt4过渡到Qt5的项目一开始就受阻,记录一下遇到的下面的问题 --->编译遇到类似错误: error: QCalendarWidget: No such file o ...

  3. qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用

    原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...

  4. 从Qt4到Qt5的,主要的进化有三(对于QtWidget的精简和优化会很有限)

    从Qt4到Qt5的,主要的进化有三:1 语言的进化,原来是基于C++(qtwidget)和XML(.ui),现在添加了QML(QtQuick)+JS(v8)的架构.2 绘图系统的进化,原先基于QPai ...

  5. Qt入门之基础篇(1):Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  6. 【转】qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用

    原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...

  7. Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  8. qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用(转)

    原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...

  9. Qt5.8以上版本编译Oracle数据库的OCI驱动教程

    在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然 ...

随机推荐

  1. Repeater实现数据绑定

    Repeater基础 在aspx文件中加入Repeater 控件,在<ItemTemplate></ItemTemplate>包含的范围里加入自己控制的代码,需要替换的变量使用 ...

  2. php number_format()保留小数点后几位有效数的函数 千位分组来格式化数字(转)

    PHP保留小数点后2位的函数number_format number_format(带小数点的书,小数点后保留的位数) number_format(8.3486,2);  //取得小数点后2位有效数/ ...

  3. 自己封装的一个简易的二维表类SimpleTable

    在QT中,QTableWidget处理二维表格的功能很强大(QTableView更强大),但有时我们只想让它显示少量数据(文字和图片),这时,使用QTableWidget就有点不方便了(个人感觉).所 ...

  4. 体验下Xcode5与ios7

    IOS7的最新更新. 1.自主选择默认地图应用苹果在iOS 6中移除了谷歌地图,使用了自家研发的苹果地图.不得不说,这款自带的地图应用可以说烂到了一定的程度,自发布之后便问题不断.正因如此,苹果应该允 ...

  5. http协言和web本质

    http协议和web本质 作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的 ...

  6. linux之SQL语句简明教程---DROP TRUNCATE

    有时候我们会决定我们需要从数据库中清除一个表格.事实上,如果我们不能这样做的话,那将会是一个很大的问题,因为数据库管理师 (Database Administrator -- DBA) 势必无法对数据 ...

  7. 【POJ 3614 Sunscreen】贪心 优先级队列

    题目链接:http://poj.org/problem?id=3614 题意:C头牛去晒太阳,每头牛有自己所限定的spf安全范围[min, max]:有L瓶防晒液,每瓶有自己的spf值和容量(能供几头 ...

  8. 【LeetCode练习题】Next Permutation

    Next Permutation Implement next permutation, which rearranges numbers into the lexicographically nex ...

  9. 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构

    for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...

  10. Cocos2d-x Render-NewCulling

    .cpp layout->setBackGroundImageScale9Enabled(true); layout->setBackGroundImage("green_edi ...