qt 采用movetothread在应用程序gui关闭时如何正确退出。

cpp 复制代码
QObject::connect(myThread, &CMyThread::started, myWork, &QMyWork::onWorkStarted);
QObject::connect(myThread, &QThread::finished, myWork, &QObject::deleteLater);
QObject::connect(myThread, &QThread::finished, myThread, &QObject::deleteLater);
QObject::connect(ui->pushButton, &QPushButton::clicked, this, &MainWindowPrivate::startWork);
myWork->moveToThread(myThread);

采用上面的常用的代码:

采用DT指针模式时,在窗口的私有数据类的析构函数中执行:

cpp 复制代码
 d->myThread->quit();
 d->myThread->wait();

QMyWork对象实例myWork能正确析构,但myThread线程不能执行&QObject::deleteLater,线程不能自己删除自己,信号与槽断了。但在窗口的closeEvent()中执行上述代码就能正确析构了,线程能自己删除自己了。QT的源代码复杂,看不懂,不知是什么原因。

相关推荐
何以解忧,唯有..11 分钟前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
caimouse19 分钟前
ReactOS 窗口系统分析(20):光标与图标 — cursoricon.c
c语言·开发语言
longxiaozhang61 小时前
C#运算符重载:让对象也能使用“加减乘除”
开发语言·c#
mounter6252 小时前
GCCRS 突破与 Rust 入核:Linux 工具链的重大变革
linux·开发语言·rust·linux kernel·kernel
Buke..2 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓
abcefg_h2 小时前
MCP 实战指南:如何在项目中使用 Model Context Protocol 及其通信原理
开发语言·后端·golang·mcp
梦痕长情2 小时前
记一次关于AI在数仓中的应用
开发语言·人工智能·python·ai
何以解忧,唯有..3 小时前
Python 线程编程:从入门到实战
开发语言·python
SomeB1oody4 小时前
【RustyML入门】7.2. 深入模型持久化
开发语言·后端·机器学习·rust·教程