我正在构建一个使用应用程序指示器的应用程序。菜单应动态更新。使用 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 而不产生这些错误/警告的正确方法是什么?