gpt4 book ai didi

c++ - gtkmm:如何在没有构建器的情况下创建弹出菜单?

转载 作者:行者123 更新时间:2023-11-30 04:50:17 27 4
gpt4 key购买 nike

我正在尝试使用 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 应用程序都使用构建器,所以我不明白如何做到这一点。

有 Gtk::MenuButton::set_popover(Gtk::Popover &),但我未能将我的菜单添加到 popover 包装器(我有 "Attempting to add a widget with type gtkmm__GtkMenu to a container类型为 gtkmm__GtkPopover,但小部件已经在类型为 GtkWindow 的容器中” 警告)。

在这种情况下如何实现弹出菜单?

最佳答案

我刚刚想出了办法。

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);

Action 可以附加:

app->add_action("settings", glibc::ptr_fun(&some_useful_func));

关于c++ - gtkmm:如何在没有构建器的情况下创建弹出菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com