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的源代码复杂,看不懂,不知是什么原因。

相关推荐
yuanlaile16 小时前
Golang实现在线教育直播、农场监控直播 幼儿园监控直播
开发语言·后端·golang·go直播实战
m0_7301151116 小时前
C++中的装饰器模式实战
开发语言·c++·算法
m0_7434703716 小时前
C++中的适配器模式
开发语言·c++·算法
ic爱吃蓝莓16 小时前
每日一题·字母异位词分组
java·开发语言
csbysj202016 小时前
Perl 目录操作
开发语言
木子清billy16 小时前
物联网浏览器(IoTBrowser)-js开发人脸识别
开发语言·javascript·物联网
沐知全栈开发16 小时前
CSS 图像透明/不透明处理指南
开发语言
Cosmoshhhyyy16 小时前
《Effective Java》解读第45条:谨慎使用Stream
java·开发语言·c#
Oueii16 小时前
模板代码模块化设计
开发语言·c++·算法
m0_7301151116 小时前
C++与Rust交互编程
开发语言·c++·算法