我是靠谱客的博主 安详羊,最近开发中收集的这篇文章主要介绍右键GtkTreeView弹出菜单,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先来看下右键弹出菜单的代码(这里不提供完整代码):

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弹出菜单所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部