【问题标题】:gtkmm entry missing keys on signal_key_press_eventsignal_key_press_event 上的 gtkmm 条目缺少键
【发布时间】:2018-02-10 08:42:19
【问题描述】:

所以我一直在试验 Gtkmm,因为我想将我的一些代码迁移到 C++,我认为这会更容易。

我曾经能够在 C 中使用类似这样的东西:

    g_signal_connect(entry, "key-release-event", G_CALLBACK(receiveKeyPressed), NULL);

但似乎当我尝试在 Gtkmm 中使用类似的系统时:

    entry->signal_key_pressed().connect( sigc::ptr_fun(*receiveKeyPressed) );

除了 shift 键和 tab 等之外,它完全忽略了所有的键盘按键。

谁能解释一下原因?

【问题讨论】:

  • 在您的小部件中,您是否尝试过 signal_key_press_event().connect(...) 代替?
  • 没试过。我试试看。

标签: c++ gtkmm3


【解决方案1】:

首先连接您的handler

标志:最后运行

#include <gtkmm.h>
#include <iostream>

int main()
{
    auto app = Gtk::Application::create();

    Gtk::Window window;
    Gtk::Entry entry;
    window.add(entry);

    entry.signal_key_press_event().connect([&](GdkEventKey* event)->bool{
            std::cout<<"pressed: "<<std::hex<<event->keyval<<" "<<std::hex<<event->state<<std::endl; 
            return false; //to propagate the event further
        }, false); //run before other handlers (from entry)

    window.show_all();
    return app->run(window);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多