Nat*_*man 2 events qt event-loop
从QCoreApplication::quit()的文档中,我并没有立即清楚这一点。
当调用 quit() 槽时,事件循环中是否有任何挂起的事件被取消?
调用QCoreApplication::quit()与调用相同QCoreApplication::exit(0)。那里说
调用此函数后,应用程序离开主事件循环并从对 exec() 的调用返回。
由于离开了事件循环,我认为任何挂起的事件都会被取消。
编辑:我做了一个小测试用例来表明挂起的事件确实被取消了:
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>
class MyObject : public QObject
{
Q_OBJECT
public Q_SLOTS:
void start()
{
QCoreApplication::postEvent(this, new QEvent(QEvent::User));
QCoreApplication::quit();
}
protected:
void customEvent(QEvent* event)
{
qDebug() << "Event!";
}
};
int main(int argc, char* argv[])
{
QCoreApplication app(argc, argv);
MyObject o;
QTimer::singleShot(0, &o, SLOT(start()));
return app.exec();
}
#include "main.moc"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,发布的事件MyObject::start()将永远不会到达。当然,如果您删除对QCoreApplication::quit().
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |