我正在尝试使用C ++制作GTK3应用程序。因为这是我的第一个gtkmm应用,而且它确实很小,所以我避免使用简单的代码构建器和放置小部件。
标题栏的菜单按钮有以下代码段:
Gtk::MenuButton mbtn;
Gtk::Menu menu;
Gtk::MenuItem mnitSettings {"Settings"};
Gtk::MenuItem mnitAbout {"About"};
mbtn.set_image_from_icon_name("open-menu-symbolic");
menu.append(mnitSettings);
menu.append(mnitAbout);
menu.show_all();
mbtn.set_popup(menu);
它工作正常,但是我注意到大多数GTK3应用程序在按钮菜单上都有某种Gtk :: Popover,在其边缘上具有过渡动画和指向箭头。令我沮丧的是,大多数GTK3应用程序都使用了builder,所以我不知道该怎么做。
有Gtk :: MenuButton :: set_popover(Gtk :: Popover&),但是我无法将菜单添加到Popover包装器中(我收到了"Attempting to add a widget with type gtkmm__GtkMenu to a container of type gtkmm__GtkPopover, but the widget is already inside a container of type GtkWindow"
警告)。
在这种情况下如何实现弹出菜单?
答案 0 :(得分:1)
我只是想办法。
Gtk::MenuButton mbtn;
Glib::RefPtr<Gio::Menu> menu = Gio::Menu::create();
menu->append("Settings", "app.settings");
menu->append("About", "app.about");
mbtn.set_menu_model(menu);
动作可以附加:
app->add_action("settings", glibc::ptr_fun(&some_useful_func));