class A:public QObject
{
Q_OBJECT
public slots:
void f() {
while(1) {
qDebug()<<"f"<<thread()<<thread()->isRunning();
sleep(1);
**QMetaObject::invokeMethod(thread(), "quit", Qt::QueuedConnection);**
}
}
public slots:
void g() { qDebug() << "g"; }
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QThread th;
A a;
a.moveToThread(&th);
th.start();
a.f();// running in main thread
return app.exec();
}
输出总是:
f QThread(0xbfdef1e0) 真
f QThread(0xbfdef1e0) 真
f QThread(0xbfdef1e0) 真
我想知道为什么 qthread 永远不会退出,因为我确实使用“QMetaObject::invokeMethod(thread(), "quit", Qt::QueuedConnection);" 在循环内调用了退出
谢谢