GTK树视图添加'按键事件'信号

时间:2016-04-28 16:26:50

标签: c treeview gtk signals

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

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键时,它会从列表中删除该项。但是,我也听到扬声器发出的哔声(在我的情况下是个人电脑外壳扬声器),好像钥匙无效。

当我按下删除按钮时,我想知道是否有办法防止发出哔哔声?

注意:如果我使用g_signal_connect,并按“删除”按钮,则不会发出哔声。但是这会禁用树视图的默认键盘快捷键(例如向上箭头,向下箭头等等)

谢谢

1 个答案:

答案 0 :(得分:2)

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

你的on_list_keypress函数应该返回一个布尔值。该布尔值表示每个给定事件的信号处理是否应该继续。通过这种方式,您可以删除"删除"信号链不可见的关键事件