当前位置:网站首页>Qt 中 QObjectCleanupHandler 使用总结
Qt 中 QObjectCleanupHandler 使用总结
2022-06-28 18:32:00 【litanyuan】
背景
QObjectCleanupHandler 类用于清理 QObject 类对象,通常可以作为资源清理器使用。
监视对象生命周期
①.概述
QObjectCleanupHandler 中管理的对象被 delete 后会自动从其管理到的象列表中删除,可以用来监视对象的生命周期。
②.代码示例
QtClassDemo * demo = new QtClassDemo(nullptr);
QObjectCleanupHandler * demoWatch = new QObjectCleanupHandler;
connect(ui.pushButton, &QPushButton::clicked, [demo, demoWatch]() {
demoWatch->add(demo);
});
connect(ui.pushButton_2, &QPushButton::clicked, [demo, demoWatch]() {
delete demo;
});
connect(ui.pushButton_3, &QPushButton::clicked, [demo, demoWatch]() {
if (demoWatch->isEmpty())
{
qDebug() << " demo 已被删除";
}
});

自动清理对象
①.概述
QObjectCleanupHandler 对象在析构时会自动 delete 其所管理到对象,可用于动态对象的自动删除。
②.代码示例
connect(ui.pushButton, &QPushButton::clicked, [&]() {
QObjectCleanupHandler objectHandler;
objectHandler.add(new QtClassDemo("demo1"));
objectHandler.add(new QtClassDemo("demo2"));
objectHandler.add(new QtClassDemo("demo3"));
objectHandler.add(new QtClassDemo("demo4"));
});

批量清理动态对象
①.概述
QObjectCleanupHandler 的 clear 方法会 delete 其所管理的所有对象,可用于动态对象的批量删除。
②.代码示例
connect(ui.pushButton, &QPushButton::clicked, [&]() {
QObjectCleanupHandler * objectHandler = new QObjectCleanupHandler;
objectHandler->add(new QtClassDemo("demo1"));
objectHandler->add(new QtClassDemo("demo2"));
objectHandler->add(new QtClassDemo("demo3"));
objectHandler->add(new QtClassDemo("demo4"));
objectHandler->clear();
});

边栏推荐
- golang中的select详解(转)
- Database comparison tool
- 今天开户今天能买股票吗?在线开户是安全么?
- 电子商务盛行,怎么提高商店转换率?
- How to design a business high performance and high availability computing architecture - job
- Database Experiment 7 integrity constraints
- 如何设计业务高性能高可用计算架构 - 作业
- February 15, 2022 learning summary
- 324. swing sequencing II
- 【Unity3D】发射(RayCast)物理射线(Ray)
猜你喜欢

【C#】详解值类型和引用类型区别

匿名函数this指向以及变量提升

如何设计业务高性能高可用计算架构 - 作业

Steam education to break the barriers between disciplines

Concept and code implementation of heap

【Unity3D】发射(RayCast)物理射线(Ray)

PCB线路板布局和布线都有哪些设计要求?

Lumiprobe非荧光叠丨氮化物研究丨3-叠丨氮丙醇

Shanghai Pudong Development Bank Software Test interview real question

数据库对比工具
随机推荐
Is it reliable to open an account for the shares of Oriental Wealth software? Where is safe to open an account
如何使用 SAP CDS view 中的 currency conversion 功能
Openfire用户以及群组关系移植
OneFlow源码解析:算子签名的自动推断
Small program graduation project based on wechat mobile mall small program graduation project opening report function reference
匿名函数this指向以及变量提升
Upload file list (repeated file names are marked with brackets)
idea其他分支合并到dev分支
记一次Emotet木马处理案例
堆的概念和代码实现
C语言文件操作
使用.NetCore自带的后台作业,出入队简单模拟生产者消费者处理请求响应的数据
Small program graduation project based on wechat chess and card room small program graduation project opening report function reference
Lumiprobe非荧光炔烃研究丨DBCO NHS 酯
HackTheBox-baby CachedView
Sharing-JDBC分布式事务之Seata实现
获取当前日期0点及23点59时间戳
双功能交联剂丨Lumiprobe 磺基花青7二羧酸研究
Introduction to apifox
请问大智慧上开户安全吗