我正在使用QT GUI应用程序,该应用程序在QApplicaton析构函数期间无法处理事件。我使用(无法更改)的库使用QEventLoop。它已将一些数据写入套接字,并且似乎正在等待响应。调试器显示QEventDispatcherWin32 :: processEvents正在循环并耗尽CPU。
我已经设法通过删除一些特定的小部件使其开始工作。但是,这似乎有点随机!
小部件销毁时,我们正在注销服务器。根据创建的窗口小部件,我有时会挂起,有时却不会。
这是挂起的exec呼叫-
m_timedout = false;
QEventLoop loop;
QTimer timer;
timer.setSingleShot(true);
connect(&timer, SIGNAL(timeout()), this, SLOT(slt_timeout()));
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
timer.start(1800000);
connect(this, SIGNAL(sig_response(int, int, QByteArray)), &timer, SLOT(stop()));
connect(this, SIGNAL(sig_response(int, int, QByteArray)), &loop, SLOT(quit()));
loop.exec(QEventLoop::ExcludeUserInputEvents);
那我在问什么?我对QT还是很陌生,不了解所有概念,但令我感到担忧的是,我们在应用程序的析构过程中依赖QT事件处理。那是一件有效的事情吗? QT会开始逐渐消失吗?
还有其他原因导致挂起吗?