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

相关推荐
diediedei3 分钟前
嵌入式数据库C++集成
开发语言·c++·算法
xie0510_5 分钟前
string模拟实现
开发语言·c++·算法
FAFU_kyp11 分钟前
RISC0_ZERO项目在macOs上生成链上证明避坑
开发语言·后端·学习·macos·rust
萧曵 丶28 分钟前
JavaScript 函数各种写法和场景
开发语言·javascript·ecmascript
雪域迷影29 分钟前
C++17中使用inline修饰类的静态成员变量
开发语言·c++·inline static·类静态成员变量
星火开发设计30 分钟前
共用体 union:节省内存的特殊数据类型
java·开发语言·数据库·c++·算法·内存
仰望星空_Star1 小时前
Java证书操作
java·开发语言
女王大人万岁1 小时前
Go语言time库核心用法与实战避坑
服务器·开发语言·后端·golang
云游云记1 小时前
php Token 主流实现方案详解
开发语言·php·token
m0_748229991 小时前
Laravel5.x核心特性全解析
开发语言·php