[Qt] deleteLater 和 delete

文章目录

deleteLater

deleteLater 是 QObject 类对象的成员函数,用于延迟删除一个 QObject 类对象。deleteLater 依赖于事件循环,调用 deleteLater 后本质是发送了一个 DeferrerDelete 事件,在事件循环处理中把对象删除。

deleteLater 会在当前对象的所有事件处理完成后再删除对象,deleteLater 会在当前对象的所有事件处理完成后再删除对象。

cpp 复制代码
//工作对象工作完成,停止线程
QObject::connect(workObject,&WorkObject::workFinished,[&](){
    workThread->quit();
    workThread->wait();
});
//工作线程停止,删除工作对象
QObject::connect(workThread,&QThread::finished,workObject,&WorkObject::deleteLater );
//工作对象销毁,删除工作线程
QObject::connect(workObject,&WorkObject::destroyed,workThread,&QThread::deleteLater );

delete

delete 是立即删除对象,对象的既有事件不再处理。

参考链接

Qt deleteLater

相关推荐
矜辰所致1 分钟前
C 语言 —— 函数指针
c语言·开发语言·指针·typedef·函数指针
zore_c2 分钟前
【C语言】struct结构体内存对齐和位段(超详解)
c语言·开发语言·经验分享·笔记
MC皮蛋侠客3 分钟前
C++17多线程编程全面指南
开发语言·c++
郝学胜-神的一滴8 分钟前
Linux C++系统编程:使用mmap创建匿名映射区
linux·服务器·开发语言·c++·程序人生
开始了码13 分钟前
QT::键盘事件简单介绍
qt
新手村领路人15 分钟前
c++ opencv缺少openh264-1.8.0-win64.dll
开发语言·c++
周杰伦fans15 分钟前
C# - 直接使用 new HttpClient() 和使用 HttpClientFactory 的区别
开发语言·c#
kyle~16 分钟前
C++ --- noexcept关键字 明确函数不抛出任何异常
java·开发语言·c++
不知所云,17 分钟前
6. c++ 20 Modules 使用
开发语言·c++20·c++ modules
lijiatu1008618 分钟前
[C++ ]qt槽函数及其线程机制
c++·qt