我需要在 Vala 中使用 Gtk 制作一个应用程序,该应用程序支持可由用户更改的键盘加速器。
首先,我向全局 Gtk.AccelMap 添加一个条目,然后为 Gtk.MenuItems 设置 accel_path。但是,它不起作用。加速不会出现在菜单栏的项目中。为了清楚我要做什么,这里有一个示例代码:
// main.vala
public class MyWindow: Gtk.Window {
public MyWindow() {
this.set_default_size(500, 500);
var main_box = new Gtk.VBox(false, 0);
this.add(main_box);
// Menubar
var menubar = new Gtk.MenuBar();
main_box.pack_start(menubar, false, false, 0);
var file = new Gtk.MenuItem.with_label("File");
menubar.add(file);
var file_menu = new Gtk.Menu();
file.set_submenu(file_menu);
var quit_mi = new Gtk.MenuItem.with_label("Quit");
file_menu.append(quit_mi);
// Register a new accelerator with the global accelerator map
Gtk.AccelMap.add_entry("<MyWindow>/File/Quit", 'Q', Gdk.ModifierType.CONTROL_MASK);
quit_mi.set_accel_path("<MyWindow>/File/Quit");
// Connect signals
quit_mi.activate.connect(Gtk.main_quit);
// Label
var …Run Code Online (Sandbox Code Playgroud)