【发布时间】:2013-04-14 04:01:50
【问题描述】:
我想做的是将鼠标点击“clicked”信号和keypress“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,当我点击按钮时,我得到指向s_up 的SegFault。按“s”没有任何作用。任何帮助表示赞赏。
【问题讨论】: