移植到 Qt 6

从上一版本 Qt 5 到 Qt 6,Qt 有许多变化。在升级到 Qt 6 之前,请确保您的 Qt 5 应用程序已更新到 Qt 5.15。在移植到 Qt 6 时,最新的 Qt 5 版本变化最少。不过,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

在 CMake 中,可以使用 add_compile_definitions:

add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

检查模块的变化

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

图形回归测试

QML 应用程序有一个新的图形后端,您应该对其进行回归测试。OpenGL 不再保证在目标平台上作为默认设置,您应检查您的 Graphical 代码是否仍能创建您想要的相同效果。

在 Qt 应用程序中仍可使用 OpenGL 调用,但 OpenGL API 已移至 Qt OpenGL模块中。Qt Widgets 应用程序的图形后端与 Qt 5 相同。

高 DPI

Qt 6 支持所有平台上的高 DPI 显示,在使用更高级别的 API(如Qt WidgetsQt Quick )时将自动考虑显示分辨率。应用程序只需提供高分辨率资产,如图像和图标。该功能始终处于启用状态。

Qt XML 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

更多阅读

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.