Qt6 中使用 Core5Compat 和 Qt5Compat

【写在前面】

        最近使用 Qt6 有一段时间了,其实对于 Qml 来说,语法上的变动不是很大。

        不过在一些组件的使用中发现很多效果和以前不太一样。

        另一方面,Qt5 (Qml) 中一些比较常用的也消失了,并且没有直接替代,需要注意。

        其中,影响最大的是 移除了 QtQuick.Controls 1.x QtGraphicalEffects 移动到 Qt5Compat 模块中。

        而对于 Qt C++ 部分,影响最大的则是 QTextCodec ,并且没有直接替代 ( Qt6 提供的 QStringConverter / QStringEncoder / QStringDecoder 不能完全替代 )


【正文开始】

        1、Qt C++ 中的 Core5Compat

        在 Qt5 中,这些类位于 Qt Core 中,Qt6 移动到 Qt Core5Compat,要使用它们:

        对于 qmake: QT += core5compat

        对于 cmake:

        find_package(Qt6 COMPONENTS Core5Compat REQUIRED)

        target_link_libraries(mytarget PUBLIC Qt6::Core5Compat)

QLinkedList 提供链表的模板类 --- / 建议使用 std:list
QLinkedList::const_iterator 提供一个 STL 风格的 const 迭代器 ---
QLinkedList::iterator 提供一个 STL 风格的非 const 迭代器 ---
QLinkedListIterator Java 风格的常量迭代器 ---
QMutableLinkedListIterator Java 风格的非常量迭代器 ---
QRegExp 使用正则表达式进行模式匹配 弃用,使用 QRegularExpression 替代
QStringRef 围绕 QString 子字符串的薄包装器 弃用,使用 QStringView 替代
QTextCodec 文本编码之间的转换 --- / QStringConverterr 部分替代
QTextDecoder 基于状态的解码器 --- / QStringDecoder 部分替代
QTextEncoder 基于状态的编码器 --- / QTextEncoder 部分替代
QXmlAttributes XML 属性 弃用
QXmlContentHandler 报告 XML 数据的逻辑内容的接口 弃用
QXmlDTDHandler 报告 XML 数据的DTD内容的接口 弃用
QXmlDeclHandler 报告 XML 数据的声明内容的接口 弃用
QXmlDefaultHandler 所有 XML 处理程序类的默认实现 弃用
QXmlEntityResolver 用于解析 XML 数据中包含的外部实体 弃用
QXmlErrorHandler 报告 XML 数据中的错误的接口 弃用
QXmlInputSource QXmlReader 子类的输入数据 弃用
QXmlLexicalHandler 告XML数据的词法内容的接口 弃用
QXmlLocator XML 处理程序类,包含有关文件中解析位置的信息 弃用
QXmlNamespaceSupport Helper 类,用于希望包含命名空间支持的 XML 阅读器 弃用
QXmlParseException 用于使用 QXmlErrorHandler 接口报告错误
用于 XML 阅读器(即解析器)的 QXmlReader 接口
弃用
QXmlReader XML 阅读器(即解析器)的接口 弃用
QXmlSimpleReader 一个简单的 XML 解析器的实现 弃用,使用  QXmlStreamReader 替代

        要注意的是:弃用的可能在未来版本删除,不建议使用

        并且,如果不使用 Core5Compat,则需要使用第三列的建议改写代码。

        2、Qml 中的 Qt5Compat

        所有以前位于​​​​​​​ QtGraphicalEffects 的移动到 Qt5Compat.GraphicalEffects 中。

        Qt6 使用时只需 import Qt5Compat.GraphicalEffects 即可。


【结语】

        截止到目前,最新的 Qt 版本为 Qt 6.4,但发现仍然有不少问题,因此并不建议升级。

        另外,Qt5Compat.GraphicalEffects 模块中的部分组件效果和原来并不一样,需要使用其他方法替代。

猜你喜欢

转载自blog.csdn.net/u011283226/article/details/125697704