ToolItem
我想在工具栏的溢出菜单中显示一个自定义菜单项。这似乎是该set_proxy_menu_item
方法的目的。但是,当我使用这种方法设置代理菜单项时,它对溢出菜单没有影响。它仍然使用默认菜单项(使用 ToolItem 的名称作为标签)。
这是一个重现问题的简单项目(在 Vala 中)。它创建了一个小窗口,其中包含一个带有 3 个按钮的工具栏。窗口应该足够小,除了这些按钮中的一个之外,所有按钮都在溢出菜单中。
当我查看溢出菜单时,我应该看到“代理”作为edit_button
. 相反,我看到“编辑”。
我究竟做错了什么?
void main(string[] args) {
Gtk.init(ref args);
MainWindow main_window = new MainWindow();
main_window.show_all();
Gtk.main();
}
public class MainWindow : Gtk.Window {
public MainWindow() {
destroy.connect(Gtk.main_quit);
title = "Main Window";
Gtk.Box main_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
add(main_box);
Gtk.Toolbar toolbar = new Gtk.Toolbar();
main_box.pack_start(toolbar, false, false);
Gtk.ToolButton new_button = new Gtk.ToolButton.from_stock(Gtk.Stock.NEW);
Gtk.ToolButton edit_button = new Gtk.ToolButton.from_stock(Gtk.Stock.EDIT);
Gtk.ToolButton delete_button = new Gtk.ToolButton.from_stock(Gtk.Stock.DELETE);
Gtk.MenuItem proxy = new Gtk.MenuItem.with_label("proxy");
proxy.show_all();
edit_button.set_proxy_menu_item("proxy_menuitem", proxy);
toolbar.add(new_button);
toolbar.add(edit_button);
toolbar.add(delete_button);
Gtk.Label content_label = new Gtk.Label("Placeholder");
main_box.pack_start(content_label, false, false);
}
}