小编Lui*_*BOL的帖子

如何在 Gtk 中使用加速器?

我需要在 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)

gtk vala application-development

6
推荐指数
1
解决办法
4712
查看次数

标签 统计

application-development ×1

gtk ×1

vala ×1