首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Qt中单击小红叉后,如何结束while循环?

在Qt中单击小红叉后,如何结束while循环?
EN

Stack Overflow用户
提问于 2013-03-13 18:03:52
回答 1查看 383关注 0票数 0

我有一个有很多按钮和标签的窗口。问题是,当我关闭这些窗口时(通过小红叉),程序仍然在任务管理器中工作(我想是因为我的代码中有while循环)。在以下示例代码中:

代码语言:javascript
复制
void MainWindow::on_pushButton_2_clicked()
{


 while (true)
 {
   //do something.........
 }
} 

那么,我如何才能感知到小红叉并完成while循环呢?

EN

回答 1

Stack Overflow用户

发布于 2013-03-13 18:38:14

在主窗口中重新实现closeEvent(QCloseEvent* event) (docs)以发出信号或手动通知包含循环的对象停止。然后在每个循环中调用QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents),这样即使线程正在循环中处理,也可以在事件队列中处理事件,然后检查关闭事件信号设置的停止条件。

毫无疑问,有更干净的解决方案,但如果没有关于你的程序架构的更具体的信息,就很难进一步评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15382121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档