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. php 代码重用

    <?php /* 21.php * 代码重用 * include() required()载入文件 * include() 如果载入文件不存在,提示警告,还可以继续执行 * required() ...

  2. newifi升级固件及开启SSH

    1.固件去官方社区下载 2.开启SSH  连接newifi访问http://192.168.99.1/newifi/ifiwen_hss.html  看到返回success  说明开启SSH 3.使用 ...

  3. 对DTU系统结构的重新思考

        从决定做DTU开始无时无刻不在对这个新的产品系统进行思考,从最开始的ucos多任务结果到QPC基 于事件回调的软件结果,再到现在准备结合两者使用QPC+freeRTOS的系统结构.     原 ...

  4. Windows消息拦截技术的应用(作者博客里有许多相关文章)

    民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做适当的处理.处理完此次消息后又回到 ...

  5. 后缀数组da3模板

    在做poj2406的时候...按论文给的rmq模板会超内存...然后网上找了http://blog.csdn.net/libin56842/article/details/46310425这位大爷的d ...

  6. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  7. Windows下nc文件传输

    起初用的一下命令: 接收端:nc –n –l –p port –vv > xxx 发送端:nc –n ip port < yyy 但是发现数据传输完成后,不会自动断开连接,要手动的断开,这 ...

  8. JS 利用CNZZ进行站长统计

    利用CNZZ对网站进行站长统计 前端页面只需要在body中添加如下代码即可: <script type="text/javascript">var cnzz_proto ...

  9. Poem: Reserverd Words

    Let this long package float, Goto private class if short. While protected with debugger case, Contin ...

  10. JNI加载Native Library 以及 跨线程和Qt通信

    Part1 Java Native Interface-JNI-JAVA本地调用 JNI标准是Java平台的一部分, 允许Java代码和其他语言进行交互; 开始实现-> Step 1) 编写Ja ...