我一直试图弄清楚如何让程序在 for 循环中停止并等待单击按钮并继续 for 循环。
没有任何简单的方法可以像 QSystem.stop()
那样停止循环,并且在单击按钮的函数 QSystem.star()
中循环继续。
在 C++ 中,您可以使用 system("pause")
或程序在使用 cin<<
时停止。但是我如何在 QT 中做到这一点?
最佳答案
由于用户界面需要其代码运行,如果您停止事件循环(这也意味着从事件循环内调用的任何函数都被阻塞,等待某个事件),您也会停止用户界面,这意味着点击进入窗口不会被处理。这就是为什么在基于事件的编程中,这是所有 UI 工具包所做的,必须尽快返回主事件处理程序循环。
您可以做的是创建第二个线程并等待条件变量。 GUI 线程可以在按钮单击事件槽中用信号通知该条件变量。
正是:程序已停止。这意味着它不会从操作系统获取事件。但是,从标准输入接收数据不是事件。它阻塞了流式 I/O。虽然图形用户界面是基于事件的。
请注意,从概念上讲,考虑提供流 I/O channel 的用户界面并非不可能。但是,这在单线程程序中不起作用。您需要并行执行(协程、线程等)才能使这样的概念发挥作用。
关于c++ - 如何在 QT 中停止和启动循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24549894/