右键事件这个玩意儿确实折腾了我一阵,一开始想用 g_signal_connect 草草搞定,没想到查了半天没有单独的右键事件,只有一个 ”button-press-event”,试了试按了右键倒是能回调函数,可是左键也是同一个回调函数,这可不行。四处乱翻加上分析,最后知道,原来回调函数加了 GdkEventButton *event 参数可以看到 event 的具体内容。其中 event->type 是事件类型,如果是鼠标调用的话就是 GDK_BUTTON_PRESS,event->button 即是表示鼠标键号,1-左键、2-中键(滚轮)、3-右键。好了,信号捕获OK了。
右键弹出菜单,建立菜单什么的都比较简单,就是显示的时候那个函数比较关键。gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, event->time);,原本 GTK_MENU 是不能显示出来的,只能用上述方法将右键菜单显示咯。
