概述
先来看下右键弹出菜单的代码(这里不提供完整代码):
1、g_signal_connect(G_OBJECT(tree), "button-release-event", G_CALLBACK(popmenu), NULL);
以上是对GtkTreeView设置消息响应,其中tree是GtkTreeView。
2、static void
popmenu(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
GtkWidget *menu;
GtkWidget *same_level, *child_level, *delete_menu;
if(event -> type == GDK_BUTTON_RELEASE && event -> button == 3)
{
menu = gtk_menu_new();
child_level = gtk_menu_item_new_with_label("Add");
g_signal_connect(G_OBJECT(child_level), "activate", G_CALLBACK(add_node_child), widget);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), child_level);
delete_menu = gtk_menu_item_new_with_label("Delete");
g_signal_connect(G_OBJECT(delete_menu), "activate", G_CALLBACK(delete_node), widget);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), delete_menu);
gtk_widget_show_all(GTK_WIDGET(menu));
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 1);
return TRUE;
}
return FALSE;
}
以上是右键GtkTreeView的回调函数,其中会弹出2个菜单:Add和Delete。
3、然后为两个菜单设置回调函数即可。
在这里,发现了一个问题,我原本是在VS中编写的,在VS中很正常,然后再拿到Wireshark中,结果不行,其实这段代码是在网上找的,结果是上面红色代码出了问题:
应该是 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, event->time);
OK,大功告成!
最后
以上就是安详羊为你收集整理的右键GtkTreeView弹出菜单的全部内容,希望文章能够帮你解决右键GtkTreeView弹出菜单所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复