QT 5升级到 Qt 6 使用 Clazy 检查将 C++ 应用程序移植到 Qt 6

本文介绍了两种将Qt 5应用程序升级到Qt 6的方法:一是使用Clazy框架提供的专用检查工具(如qt6-deprecated-api-fixes等),这些工具能帮助识别和修复Qt 5到Qt 6的兼容性问题;二是建议先将应用程序更新至Qt 5.15,并通过定义QT_DISABLE_DEPRECATED_UP_TO宏来禁用已废弃的API,以减少移植难度。两种方法均需注意API变更和兼容性处理,确保顺利迁移到Qt 6。

我这里是摘抄了QT官网的内容,给出了引用的网址,这都是官方权威的信息:

我在QT官网看到有如何将C++应用程序升级到QT 6的工具:

使用 Clazy 检查将 C++ 应用程序移植到 Qt 6

我们在 Clazy 框架内实施了一些检查和修复,以帮助您将应用程序从 Qt 5 移植到 Qt 6。用他们自己的话说"Clazy 是一个编译器插件,它允许 clang 理解 Qt 语义。请获取 Clazy(https://invent.kde.org/sdk/clazy) 并继续阅读,以便更顺利地移植到 Qt 6。

Clazy 检查可在编译过程中作为插件运行,也可使用clazy-standalone 通过 JSON 编译数据库运行。修正会在稍后应用,使用clang-apply-replacements 。

专用于 Qt 6 移植的 Clazy 检查

以下检查专门用于简化从 Qt 5 到 Qt 6 的移植。

qt6-deprecated-api-fixes

qt6-header-fixes

qt6-qhash-signature

qt6-fwd-fixes

missing-qobject-macro

这些检查必须在 Qt 5 中运行。修正后的代码只能在 Qt 6 中编译。因此,必须一次性运行上述检查。Clazy 建议一次只运行一个测试,以避免在应用修复时发生冲突。

网址

https://doc.qt.io/qt-6/zh/porting-to-qt6-using-clazy.html

移植到 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 5.15 过时的 C++ 类

Qt 5.15 过时的 QML 类型

Qt 6 过时的 C++ 类

Qt 6 过时的 QML 类型

网址:

https://doc.qt.io/qt-6/zh/portingguide.html

相关推荐
思茂信息41 分钟前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
海上小飞龙1 小时前
改一个数,右边全得重算,这题怎么扛住两万次查询
java·c++·python
阿里嘎多学长1 小时前
2026-09-28 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Persistent的粽子!1 小时前
双指针算法:最大盛水容器
c++·算法·leetcode
小小龙学IT1 小时前
三菱 PLC MC 协议(SLMP / QnA 兼容 3E 帧)深度解析:从帧结构到 C++/Go 双语言采集实战
c语言·c++·golang
程序猿编码1 小时前
C++/CUDA 手写 LLM 推理引擎:拆解 vLLM 核心 PagedAttention 与连续批处理
开发语言·c++·深度学习·神经网络·推理·vllm
hold?fish:palm2 小时前
44 二叉搜索树中第K小的元素
开发语言·c++·算法
凉茶钱2 小时前
【吃透C++】万字解析类和对象
开发语言·c++
白杨尚青2 小时前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
FlightYe2 小时前
视界原理之2D视频(二):视频文件里有什么
android·linux·网络·c++·ffmpeg·音视频·aac