【问题标题】:Bind a key to a GTK application, without removing the existing one将密钥绑定到 GTK 应用程序,而不删除现有密钥
【发布时间】:2017-03-07 13:51:31
【问题描述】:

我正在使用 gtk 用 C 语言制作一个小型图形程序。

我设法创建了一个键盘快捷键,当我按下 escap 按钮时,应用程序退出:

gboolean on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data){
    switch(event->keyval){
        case GDK_Escape:
            gtk_main_quit();
            break;
    }
    return TRUE;
}

当我创建 GUI 时,我有这段代码来检测按键:

g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK(on_key_press), pCtxt);

问题是,它禁用了任何类型的交互,例如使用 TAB 键选择按钮,甚至在 gtk_entry 中输入文本。

如何在不破坏按键事件的默认行为的情况下使用键盘快捷键?

【问题讨论】:

  • 您没有阅读我的整个问题。 “如何在不破坏按键事件的默认行为的情况下使用键盘快捷键?”

标签: c gtk


【解决方案1】:

让您的事件处理程序return FALSE; 进一步传播事件。正如documentation 所说:

返回TRUE 以阻止为该事件调用其他处理程序。 FALSE 进一步传播事件。

【讨论】:

  • 这修复了它。谢谢你!
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 2017-12-04
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多