int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread * t = new QThread();
t->moveToThread(t);
t->connect(t, &QThread::started, t, [=] {
QTimer * time = new QTimer(t);
time->connect(time, &QTimer::timeout, t,[] {
printf("1234\n");
});
time->start(1);
for (int i = 0; i < 500; ++i)
{
printf("%d\n", i);
}
printf("12345");
});
t->start();
_sleep(2250);
t->quit();
t->wait();
t->deleteLater();
return 0;
}
重点是
t->quit();
t->wait();
t->deleteLater();
先给线程发送退出信号,然后等待退出,然后回收t的内存
不要用 connect(t, &QThread::finished, t, &QThread::deleteLater); 因为会导致线程未结束Destroyed while thread is still running的错误