使用c从app-indicator中的GtkMenu中删除GtkMenuItem

时间:2012-12-22 15:10:00

标签: c gtk gtk3

我正在构建一个使用app-indicator的应用程序。菜单应该动态更新。使用gtk_menu_shell_append添加项目效果很好,但是为了删除我无法找到gtk_menu_shell_ *函数。我找到了gtk_container_remove并用gtkmenuitem调用它,它的父节点会产生以下警告:

GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkWidget'
Gtk-CRITICAL **: gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed
Gtk-CRITICAL **: gtk_container_remove: assertion `GTK_IS_CONTAINER (container)' failed

我也试过调用gtk_widget_destory并得到如下错误:

GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkWidget'
Gtk-CRITICAL **: gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed

请注意,这两种方法实际上都会从菜单中删除菜单项。

在不生成这些错误/警告的情况下从GtkMenu中删除GtkMenuItem的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

显然小部件在某种程度上是错误的(不明白为什么这仍然会起作用)。