首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >启用已废弃或过时的Qt方法

启用已废弃或过时的Qt方法

作者头像
Qt君
发布2023-03-17 13:33:14
发布2023-03-17 13:33:14
1.3K0
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

❝将Qt 4.x过渡到Qt 5.x,或Qt 5.x过渡到最新Qt版本,编译出超多的错误。本文介绍如何降低过渡到高版本带来的维护问题。

注意: 不提倡这种做法,仅供参考。

  我们在使用新版的QtCreator自动生成pro文件中,有这么一段代码。实际上也没有开启。意思是「禁用所有Qt 6.0.0之前的API」

代码语言:javascript
复制
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

用法

  这个宏每次自动创建pro文件都有QT_DISABLE_DEPRECATED_BEFORE,就看看它有什么用吧。下列是Qt官方文档介绍。

代码语言:javascript
复制
This macro can be defined in the project file to 
disable functions deprecated in a specified version of Qt or any earlier version. 
The default version number is 5.0, 
meaning that functions deprecated in or before Qt 5.0 will not be included.

Examples: 
When using a future release of Qt 5, 
set QT_DISABLE_DEPRECATED_BEFORE=0x050100 to disable functions deprecated in Qt 5.1 and earlier. 
In any release, set QT_DISABLE_DEPRECATED_BEFORE=0x000000 to enable any functions, 
including the ones deprecated in Qt 5.0

  大概意思就是:「定义QT_DISABLE_DEPRECATED_BEFORE宏的值可以禁用具体某个版本之前已废弃或过时的方法。」 比如:

代码语言:javascript
复制
# 禁用Qt 5.1版本之前已废弃或过时的方法,
# 这意味着可以使用Qt 5.1版本之后已废弃或过时的方法。
QT_DISABLE_DEPRECATED_BEFORE=0x050100 
代码语言:javascript
复制
# 这个宏更夸张,能使用Qt 5.0版本之前已废弃或过时的方法。
QT_DISABLE_DEPRECATED_BEFORE=0x000000

使用

  1. pro项目文件添加以下代码:
代码语言:javascript
复制
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000
  1. 这样我们就可以使用Qt 5.0版本之前已废弃或过时的方法了。
  2. 例如QAbstractItemModel类的reset()方法。
  3. QAbstractItemModel.h节选源码:
代码语言:javascript
复制
#if QT_DEPRECATED_SINCE(5,0)
    QT_DEPRECATED void reset()
    {
        beginResetModel();
        endResetModel();
    }
#endif
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 用法
  • 使用
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档