【发布时间】:2011-12-13 04:01:23
【问题描述】:
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);" 调用了退出
谢谢
【问题讨论】: