响应式网站设计布局,移动应用开发专升本,零基础学做网站教程,wordpress所需系统Qt框架的一个新的长期支持版本6.5最近发布。它为以前的版本引入了许多修复、改进和新功能。有些可能对您的应用程序有用#xff08;如果不是现在#xff0c;可能会在将来#xff09;#xff0c;因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5如果不是现在可能会在将来因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5因此直接迁移到最新版本的框架并不容易。在本文中主要指出从Qt 5顺利迁移到Qt 6的最关键步骤。
那么为什么是Qt 6呢
改进了性能。Qt 6引入了一个新的渲染管线可以提高性能并减少内存使用量从而产生更快、响应更快的应用程序。改进的 QML。QML 已得到增强性能更好改进了对将C类导出到 QML 的支持以及用于调试 QML 代码的更强大的工具。新的Qt快速编译器允许您预编译QML文件以加快启动时间。改进的模块。一些模块已被重写和改进例如Qt Quick 3DQt Multimedia和Qt WebEngine。使用这些模块的最新版本将确保您的应用程序符合当前标准。附加模块。许多模块将作为附加组件提供。它将使Qt二进制文件更小并允许您仅在项目中需要时才下载模块。统一后端。Qt 6提供了一个API来访问多个环境中特定于平台的功能。这包括图形、多媒体、输入和窗口系统。长期支持。Qt 5已经到了它的生命周期虽然某些旧版本仍然有安全和错误修复但任何新的特性或功能都只能在Qt 6中使用。如果您不希望您的应用程序过时得太快您应该进行迁移。
这些是确保使用最新版本的Qt 6使您的应用程序与最新功能保持同步的主要内容。应用程序的性能将比以前更好并且将来维护应用程序将更容易。
迁移到Qt 6的路径
第 1 步。QT 移植到 QT 5.15
将应用程序移植到Qt 5的最新版本然后切换到Qt 6要容易得多。这是因为Qt在6.5版本中只发布了简化迁移到Qt 5.15的机制。从Qt 5的先前版本迁移到最新版本的Qt 5应该很简单。
第 2 步。检查模块更改
在Qt 6中Qt 5中提供的某些模块不再可用。这些模块将被删除、重命名或合并到不同的模块中。在最新版本中几个已删除的模块已经刷新并添加到框架中。
通过检查模块更改可以确保应用程序在迁移后按预期工作。当模块不再存在时关于如何表现的可能解决方案可能会有所不同。下面是几个已弃用模块的示例以及如何更新使用它们的代码。
Qt 快速控制 1 → 使用新的 Qt 快速控制 2Qt Multimedia Widgets → 使用 Qt Multimedia 的 QML APIQt 图形效果 → 使用 Qt5Compat 模块Qt Quick MultiEffect 从 Qt 6.5 开始
因此取决于需要替换的模块。删除模块和其他更改的完整列表可以在Qt文档中找到。
“是否需要检查文档中每个模块的更改”
没必要。它可以帮助您找到已弃用API的正确替代品但Qt creator工具可以提示不再受支持的代码的所有部分。请看步骤4.
第 3 步。QT移植检查您的环境
Qt 6需要C17或更高版本的编译器例如对于Windows – MinGW 8.1.0或msvc 2019因此如果您使用的是旧版本则是时候升级了。Qt公司开发的工具也支持Qt 6因为特定版本。对于Qt Creator它是4.14对于Qt Design Studio它是2.0。
如果安装了正确的编译器和工具则为 Qt 6 准备的应用程序应在移植后正确构建和运行。
第 4 步。执行移植到 QT 6
摆脱已弃用的功能。
在Qt 5.15中Qt 6中不包含的所有内容都被标记为已弃用。默认情况下此代码的使用将作为编译器警告弹出。但是也可以选择将其视为错误。
要确保这一点需要定义它应设置为指定宏时已弃用的功能在给定版本的Qt或任何更早版本中将被禁用。QT_DISABLE_DEPRECATED_BEFORE0x050F00
如果在生成过程中看到任何错误则应重构该部分。 不带宏的输出。应用已正确构建。 使用宏输出。无法构建应用。
运行冲突并摆脱这些警告。
Clazy 是一个静态分析工具可作为 QtCreator 中的插件使用。Clazy 可以分析代码并向您展示需要改进的地方。可以明确地告诉 Clazy 在执行过程中要检查什么。需要检查一些特殊选项这些选项可以指向Qt 6中不支持的代码部分。Clazy 也能够自动修复这些警告。
在移植过程中有用的选项
qt6-deprecated-api-fixes qt6-header-fixes qt6-qhash-signature qt6-fwd-fixes missing-qobject-macro 可以在首选项→分析器→Clang工具→诊断配置中更改延迟配置。 在移植过程中有用的选项: 输出示例。
必要时使用 Qt5Compat 模块。
在第2步中提到了一个名为Qt5Compat模块
引入该模块是为了更好的进行迁移和过渡。它提供了Qt 6中消失的一些类例如QRegExp和QStringRef但由于这一点它仍然可以在Qt 6应用程序中使用。比如某些模块在Qt 6中消失了但将在下一个版本中作为MultiEffect重新引入。因此在此期间可以暂时使用Qt5Compat模块来确保兼容性。但是当MultiEffect模块可用时应该重写代码以切断过时的API。
如何将模块导入到项目中 头文件包含也需要更改 最后请做好相关测试。