c++ - 在QApplication的析构函数中使用QT事件——挂起
问题描述
我正在使用 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不是已经开始降温了吗?
还有什么会导致挂起的吗?
解决方案
推荐阅读
- python - 正则表达式在搜索时忽略某些字符
- r - R通过小标题滑动窗口
- javascript - WebSocket 握手期间的 WebSockets WS 错误:意外的响应代码:200
- matlab - 在 for 循环中按唯一列值提取行分组。Matlab中的多个输出
- r - 如何在 R 中创建全基因组读取密度图(用于细菌基因组)
- java - 更新 JHipster 后不提供 Angular 组件,仅提供根 index.html
- r-markdown - 如何在用 kable 生成的表格的脚注中插入引文?
- javascript - 使用 Swal 库时,不知道是因为 api 才得到的,为什么?
- javascript - ApexChart 更新系列和标签
- assembly - x86 解释,函数参数和局部变量的数量