【问题标题】:sending fake event to GTKEntry向 GTKEntry 发送虚假事件
【发布时间】:2016-05-09 14:44:23
【问题描述】:

我正在使用 gtk-3.0 创建我的简单 UI,我想通过 g_signal_emit(...) 函数向 GTKEntry 发送一个假事件。 其实,我不知道应该给这个函数传递什么参数。

【问题讨论】:

  • 您需要在问题中提供更多细节 - 问题的答案取决于您尝试发出的信号。

标签: keyevent key-events gtkentry


【解决方案1】:

来源:https://mail.gnome.org/archives/gtkmm-list/2007-June/msg00115.html

void Foo:bar() // handler for signal_clicked()
{
        <YOUR TREEVIEW>.grab_focus(); // essential

        guint keyval = GDK_Page_Down;

        GdkKeymapKey* keys;
        gint n_keys;
        gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(),
                                          keyval,
                                          &keys,
                                          &n_keys);
    // Note: GdkEvent is an union
        GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
        ((GdkEventKey*)event)->window =
                             <YOUR TREEVIEW>get_window()->gobj();
        ((GdkEventKey*)event)->send_event = TRUE;
        ((GdkEventKey*)event)->time = GDK_CURRENT_TIME;
        ((GdkEventKey*)event)->state = GDK_KEY_PRESS_MASK;
        ((GdkEventKey*)event)->keyval = keyval;
        ((GdkEventKey*)event)->hardware_keycode = keys[0].keycode;
        ((GdkEventKey*)event)->group = keys[0].group;

        gdk_event_put(event);
//      Or, more gdkmm-ish:
//      Gdk::Event(event).put();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多