c语言 - GTK 树视图添加'key-press-event'信号



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

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

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

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

添加Delete键的处理程序后,现在当我按下Delete按钮时,它会从列表中删除该项。但是,我也会听到扬声器(在我的电脑外壳扬声器中)发出嘟嘟声,好像钥匙无效。

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

注意:如果我使用g_signal_connect,并按下Delete按钮,则不会发出嘟嘟声。但这会禁用树视图的默认键盘快捷键(如向上、向下等)

感谢

https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-按键事件

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

最新更新