【问题标题】:Modal Loop in a GTK+ applicationGTK+ 应用程序中的模态循环
【发布时间】:2012-04-25 13:42:28
【问题描述】:

我正在尝试编写一个函数,该函数将等待用户单击 GTK+ 小部件中的某个位置(类似于绘图区域)并返回鼠标坐标。该函数的行为应该是模态的,因为它一直等到接收到输入。熟悉 Windows API 的人可能会发现与 TrackPopupMenu 函数有些相似之处,该函数也会等待菜单项被选中。

我在这里尝试做的类似于使用 Windows API 运行“辅助消息循环”。在 GTK+ 中它是如何完成的?

【问题讨论】:

    标签: user-interface gtk modal-dialog event-loop


    【解决方案1】:

    您可以调用@987654321@ 来“泵送”GTK+ 事件系统,而不会(FALSE)阻塞应用程序。

    【讨论】:

    • 工作完成后再次调用 gtk_main 后调用 gtk_main_quit 是否有任何问题?例如,我想编写一个函数,提示用户在客户区内选择一个点。我为按钮按下事件设置了一个信号处理程序并调用 gtk_main。在处理程序中,一旦选择了点,我将点保存在某处并调用 gtk_main_quit 导致最里面的 gtk_main 返回。这是可取的吗?
    【解决方案2】:

    GtkWindow 可以使用gtk_window_set_modal 成为模态,而不是 GtkWidget。这是有道理的,否则如果没有弹出窗口,用户将不知道与什么进行交互。

    【讨论】:

    • 在这种情况下,我没有使用模式窗口。我只想要一个行为模式的函数。该函数提示用户选择一个点,直到该点被选中才返回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多