Gtkmm:如何暂停应用程序的执行并等待用户输入?

Posted

技术标签:

【中文标题】Gtkmm:如何暂停应用程序的执行并等待用户输入?【英文标题】:Gtkmm: How to pause the execution of the application and wait for user input? 【发布时间】:2018-02-09 21:11:02 【问题描述】:

我正在寻找一种方法来暂停应用程序的执行,而不会冻结它,并且当用户按下按钮时,它会立即继续它暂停时正在执行的任何操作。

我找不到任何关于此或如何暂停执行一段时间的文档。有人可以帮我解决这个问题吗?

【问题讨论】:

我试过使用这个:people.gnome.org/~gcampagna/docs/GLib-2.0/GLib.usleep.html 以及使用 sleep() commnad,但不是仅仅暂停应用程序,而是使其无响应。我正在尝试做的是使用 GUI 可视化算法的某些部分,但是输出显示速度太快而且很难理解。 暂停到底是什么? UI 应用程序正在运行所谓的“消息泵循环”。你想停止那个循环还是什么? 我正在尝试在解决问题时暂停算法。它向 GUI 发送一些参数,GUI 会显示它们,在这里执行应该暂停。当用户按下按钮时,从该点继续执行。 您的算法应该在工作线程中运行。您可以暂停该线程,但不能暂停主 GUI 线程。即使在暂停状态 UI 也应该有机会在窗口表面上呈现。渲染是在 GUI 线程中进行的,因此不会被阻塞。 我找到了 std::condition_variables 的主题,我认为这可以让我做你描述的事情。非常感谢您提供的信息:) 【参考方案1】:

正如您所说的“用户界面”,我建议使用模式对话框。 每个 UI 库都可以选择创建模式对话框。

要求用户在模式对话框中输入。执行等待,直到模态对话框关闭。使用“关闭”或“确定”按钮关闭模态对话框。

【讨论】:

以上是关于Gtkmm:如何暂停应用程序的执行并等待用户输入?的主要内容,如果未能解决你的问题,请参考以下文章

检测 PowerModeChange 并等待执行

python程序如何让其暂停

暂停循环并等待 UIAlertView 交互

如何暂停powershell脚本,直到调试器附加

ember 验收测试等待助手

用户输入和while循环