移植到 Qt 6

从 Qt 5 版本到 Qt 6 有许多变化。在升级到 Qt 6 之前,请确保您的 Qt 5 应用程序已更新到 Qt 5.15。最新的 Qt 5 版本在移植到 Qt 6 时变化最小。但是,Qt 5.15 标记为已弃用或过时的 API 可能已在 Qt 6 中被移除。

以下是如果您将 Qt 5 应用程序移植到 Qt 6 应该检查的事项。

禁用 Qt 5.15 已弃用的 C++ API

Qt 已弃用的 API 的大多数使用将显示为编译器警告。您还可以通过在构建系统中定义 QT_DISABLE_DEPRECATED_UP_TO C++ 宏来将其用作错误。要禁用在 5.15 及更早版本的 Qt 中已弃用的任何 API,请将宏定义为 0x050F00,这以十六进制数的形式表示 '5.15.0'。

例如,在 qmake 项目文件中,使用以下方式定义宏:

DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00

add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

检查模块的变更

Qt 6 发布的目标是保持一个精简的框架,这意味着在 Qt 6 中移除了一些 Qt 5 模块。在某些情况下,已弃用模块的 API 可在另一个模块中找到。在未来的 Qt 6 发布中,可能会添加新的或以前的模块。

测试图形回归

QML 应用程序有新的图形后端,您应该测试其回归。OpenGL 在目标平台上不再默认保证,您应该检查您的图形代码是否仍然创建了您想要的效果。

在 Qt 应用程序中仍然可以使用 OpenGL 调用,但 OpenGL API 已移动到 Qt OpenGL 模块。Qt Widgets 应用的图形后端从 Qt 5 保持不变。

高 DPI

Qt 6 在所有平台上支持高 DPI 显示,并将自动根据使用更高级别的 API(例如 Qt Widgets 或 Qt Quick)时计算显示分辨率。应用程序只需要提供高分辨率资产,例如图片和图标。该功能始终启用。

Qt 6 将默认缩放因子取整策略从 Qt::HighDpiScaleFactorRoundingPolicy::Round 更改为 Qt::HighDpiScaleFactorRoundingPolicy::PassThrough,以便更准确地跟踪操作系统 DPI 设置。使用 Qt Widgets 的应用程序可能在非整数缩放因子下遇到图形错误,例如在 Windows 系统中,当设置显示比例为 175% 时。在这种情况下,将取整策略设置为 Round 以恢复 Qt 5 的行为。

有关更多详细信息,请参阅 高 DPI

使用平台集成 API

Qt 6 在目标平台上的原生 API 集成更好。您可以使用平台集成 API 实现Qt未提供的原生行为。对于 Qt 6,请检查您应用程序的目标平台是否有任何更新。

使用移植工具

有一种基于 Clazy 的工具可用于从 Qt 5 向 Qt 6 移植:使用 Clazy 检查将 C++ 应用程序移植到 Qt 6

更多信息

© 2024 The Qt Company Ltd. 本文档的贡献者是各自所有者的版权。本提供的文档是根据自由软件基金会发布的GNU 自由文档许可证版本 1.3 的条款许可的。Qt 和相应标志是 The Qt Company Ltd 在芬兰和其他国家和地区的商标。所有其他商标均为其各自所有者的财产。