qt4升级到qt5的一些问题

Posted 朝十晚八

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt4升级到qt5的一些问题相关的知识,希望对你有一定的参考价值。

由于最近项目使用的qt版本从qt4.8升级到qt5.5,虽然从4到5的变化不大,不过还是有许多的问题需要记录一下,希望可以帮助到更多的人?

1、由于Qt5将大部分桌面部件移到了Qt Widgets模块中?,因此在保护QtGui的地方需要包含QtWidgets模块

2、乱码问题。

    方式针对vs,由于window历史原因,vs上使用utf8编码时,std::string(标准串)会乱码,因此vs上暂时使用gbk编码。Qt5去 除了QTextCodec::setCodecForCStrings()函数,所以在涉及到在cpp中直接写汉字常量的情况,直接使用宏 QStringLiteral包裹,例如QStringLiteral("我是汉字");如果汉字存储于变量中则使用fromLocal8bit静态方法。

   针对linux,直接使用gbk编码,QString有成员方法toStdString,把QString类型的串转换为std::string,QString::fromStdString方法把标准串转化为QString类型

3、加入json模块

标准jion串都是以键值对的形式描述的?,键是字符串,值可以时json对象、json数组或者json值

QJsonValue:json串的值

QJsonObject:json对象

QJsonArray:json数组?

4、?使用到QWebView等webkit相关可视部件的,Qt5单独放到了QtWebKitWidgets模块中,所以得加头文件#include 

5、加入多个connect重载方法,新的connect链接时,会使用类型检测,在编译器如果不匹配会报错?

6、QtMutimedia替换了Phonon?

 

C++接口变化

移植C++应用 qt 5

 

顺道说一句:qt可以使用QAxWidget或者QWebView?来嵌入web页面,但是qt的ui刷新时在主线程中刷新的,因此,当web窗口刷新时,整个app都会假死,建议使用cef来嵌入浏览器,功能强大,不过动态库很大

以上是关于qt4升级到qt5的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

QT项目升级(QT4.6.3到QT5.2)时,遇到的问题和解决方法

Qt4升级到Qt5需要干的那些事(CMake)

在 Qt4 中使用最新的 Qt5 串口库

使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)

测试从 qt4 迁移到 qt5 的库时出现分段错误

从 Qt4 移植到 Qt5 时 Ctrl+U 组合键丢失