0

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

void MainWindow::on_pushButton_2_clicked()
{


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

那么我怎么能感觉到小红叉并完成while循环。

4

1 回答 1

0

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

毫无疑问,有更清洁的解决方案,但没有关于您的程序架构的更具体信息,很难进一步评论。

于 2013-03-13T10:38:14.203 回答