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

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

时间: 2024-12-24 16:52:28

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

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

转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且允许真正地组件编程.基本上,Qt同X Window上的Motif,Openwin,GTK等图形界面库以及Windows平台上的MFC.OWL.VCL.ATL是同类型的东西. 本系列教程以Qt5.6为基础展开精讲. 参考书目: [1]霍亚飞.Qt Creator快速入门(第3版).2017年 [2]蔡

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

原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensource.exe Qt5 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.2.2-opensource.exe 笔者先安装了QT4的vs插件,再安装了QT5的vs插件.运行VS2010时会提示警告信息: !!! Qt4 Add-in was found and

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

从Qt4到Qt5的,主要的进化有三:1 语言的进化,原来是基于C++(qtwidget)和XML(.ui),现在添加了QML(QtQuick)+JS(v8)的架构.2 绘图系统的进化,原先基于QPainter的绘图系统无法充分发挥OpenGL的威力,于是添加了SceneGraph绘图框架,专供QtQuick使用.3 放弃以前基于显示服务的QWS框架,用基于操作系统和通用API的QPA代替,增强移植能力. 所以我猜测Qt5.5以后的版本会干的事情:1.进一步完善QML的语法,比如在未来支持一些和E

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

原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensource.exe Qt5 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.2.2-opensource.exe 笔者先安装了QT4的vs插件,再安装了QT5的vs插件.运行VS2010时会提示警告信息: !!! Qt4 Add-in was found and

Qt4升级Qt5注意问题

Qt4升级Qt5注意问题 Qt4过渡到Qt5的项目一开始就受阻,记录一下遇到的下面的问题 --->编译遇到类似错误: error: QCalendarWidget: No such file or directory error: QComboBox: No such file or directory error: QDateEdit: No such file or directory 解决方案如下: 1.在*.pro文件里添加: QT += widgets 2.修改 #include <

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

原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensource.exe Qt5 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.2.2-opensource.exe 笔者先安装了QT4的vs插件,再安装了QT5的vs插件.运行VS2010时会提示警告信息: !!! Qt4 Add-in was found and

在使用ubuntu16.04时候 qt4与qt5冲突导致的问题

最近在写qglviewer的时候发现一个问题,这是在ubuntu14.04上没有发生的问题,realloc invalid pointer 查了半天资料之后范县是qt4与qt5之间发生矛盾,导致qglviewer不能链接到正确的qt版本,也有人通过卸载qt5解决 但是并不是一个有效的解决办法. 最后贴上我的解决方案:  在qmake上加上 "/usr/lib/x86_64-linux-gnu/libQGLViewer-qt4.so.2.6.3 \"而不是  "/usr/lib

在VS2010 中兼容Qt4和Qt5

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

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

在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然失效了,具体出现在Qt5.7.1之后的版本. 这次我带来Qt5.8.0的编译教程,Qt5.9的版本同样适用. Qt版本是Qt5.8.0,安装路径是默认的 C:\Qt\Qt5.8.0,Oracle客户端版本oracle 11g 安装路径是 D:\app\Xiao\product\11.2.0\clie