当前位置:网站首页>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();
});

边栏推荐
- About the solution of "modulenotfounderror: no module named 'flask.\u compat'"
- curl: (56) Recv failure: Connection reset by peer
- 请问大智慧上开户安全吗
- 亿信华辰:地产企业数字化转型想要把握时代机遇
- How to use the current conversion function in SAP CDs view
- Yixin Huachen: real estate enterprises want to grasp the opportunity of the times for digital transformation
- CORBA 架构体系指南(通用对象请求代理体系架构)
- 浦发银行软件测试面试真题(小编面试亲测)
- February 15, 2022 learning summary
- moco挡板制作及运行成功
猜你喜欢

Small program graduation project based on wechat mobile mall small program graduation project opening report function reference

Seata implementation of sharing JDBC distributed transaction

Common DOS commands

Lumiprobe ProteOrange 蛋白质凝胶染料说明书

匿名函数变量问题

微软独家付费功能,也被完美解锁了

堆的概念和代码实现

Concept and code implementation of heap

独立站卖家如何高效管理复杂的Facebook主页?

PHP使用栈解决迷宫问题
随机推荐
Applet graduation design based on wechat conference room reservation applet graduation design opening report function reference
推荐两款超高质量的壁纸软件
leetcode 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers(最少的“二进制数“个数)
Lumiprobe 蛋白质标记研究方案
China gaobang brand story: standing guard for safety, gaobang pays attention to
声网 VQA:将实时互动中未知的视频画质用户主观体验变可知
华为云AOM发布2.0版本,3大特性亮相
golang json 序列化、反序列化 字符串反序列化成 map[string]interface{}
SMARCA2抗体研究:Abnova SMARCA2 单克隆抗体方案
打破学科之间壁垒的STEAM教育
Konva series tutorial 3: Customizing drawings
微信小程序接入百度统计报错 Cannot read property ‘mtj‘ of undefined
IDM certification process log embedding point description
获取当前日期0点及23点59时间戳
深入解析kubernetes中的选举机制
剑指 Offer 11. 旋转数组的最小数字
sqrt()函数的详解和用法「建议收藏」
电子商务盛行,怎么提高商店转换率?
内存泄露
Unity about oculus quest2 basic development based on XR interaction toolkit 003- capture function - making a VR bowling game