我想做的是将鼠标单击“clicked”信号和按键“key_press_event”信号连接到同一个回调函数。代码开始是这样的:
static void s_up(GtkWidget *btn,
gpointer data)
{
code ...
}
...
int main(int argc, char **argv)
{
...
g_signal_connect(button, "clicked", G_CALLBACK(s_up), NULL);
}
它处理鼠标点击就好了。然后我想向它添加键盘按键。所以我将代码更改为
static void s_up(GtkWidget *btn,
GdkEventKey *event
gpointer data)
{
if(event->keyval == 's')
more code ...
}
...
int main(int argc, char **argv)
{
...
g_signal_connect(button, "key_press_event", G_CALLBACK(s_up), NULL);
}
当我在键盘上按“s”时它起作用了。
我的问题是如何将两个信号连接到同一个s_up
回调函数?除了明显的问题之外if(event->keyval == 's')
,我尝试调用两者gtk_signal_connect
,当我点击按钮时,我得到 SegFault 指向s_up
。按“s”没有任何作用。任何帮助表示赞赏。