【问题标题】:GTK treeview add 'key-press-event' signalGTK 树视图添加“按键事件”信号
【发布时间】:2016-04-28 16:26:49
【问题描述】:

我正在尝试将“按键事件”添加到树视图。这是为了检测“删除”键,然后我可以从列表中删除一个项目。为此,我添加了以下信号:

g_signal_connect(G_OBJECT(_treeView), "key-press-event", G_CALLBACK(on_list_keypress), 0);

当我按下任何按钮时,都会调用回调函数“on_list_keypress”。但是,添加此信号后,我无法使用箭头、主页和结束键浏览消息。

我已将 g_signal_connect 替换为 g_signal_connect_after,现在我可以使用键盘浏览消息并在选择列表中的项目时检测任何按键。

为 Delete 键添加处理程序后,现在当我按下 Delete 按钮时,它会从列表中删除该项目。但是,我也听到扬声器发出哔哔声(在我的情况下是 pc 机箱扬声器),好像密钥无效。

我想知道是否有什么方法可以防止按下删除按钮时发出哔声?

注意:如果我使用 g_signal_connect,然后按 Delete 按钮,则没有哔声。但这会禁用树视图的默认键盘快捷键(例如向上、向下箭头等)

谢谢

【问题讨论】:

    标签: c treeview gtk signals


    【解决方案1】:

    https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-key-press-event

    您的 on_list_keypress 函数应该返回一个布尔值。该布尔值告诉信号处理是否应该针对每个给定事件继续。这样就可以让“delete”按键事件对信号链不可见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多