我有一个有很多按钮和标签的窗口。问题是,当我关闭这些窗口时(通过小红叉),程序仍然在任务管理器中工作(我想是因为我的代码中有while循环)。在以下示例代码中:
void MainWindow::on_pushButton_2_clicked()
{
while (true)
{
//do something.........
}
} 那么,我如何才能感知到小红叉并完成while循环呢?
发布于 2013-03-13 18:38:14
在主窗口中重新实现closeEvent(QCloseEvent* event) (docs)以发出信号或手动通知包含循环的对象停止。然后在每个循环中调用QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents),这样即使线程正在循环中处理,也可以在事件队列中处理事件,然后检查关闭事件信号设置的停止条件。
毫无疑问,有更干净的解决方案,但如果没有关于你的程序架构的更具体的信息,就很难进一步评论。
https://stackoverflow.com/questions/15382121
复制相似问题