从gtkmm-3.0迁移到gtkmm-4.0时的GdkEventButton



我正在尝试获取光标的坐标,以及在gtkmm 4.0中单击按钮时发生的单击类型。

在gtkmm 3.0中,我可以使用GdkEventButton,如文档中的示例:

bool on_button_press(GdkEventButton* event);
Gtk::Button button("label");
button.signal_button_press_event().connect( sigc::ptr_fun(&on_button_press) );

但是GdkEventButton在gtkmm 4.0中似乎不再存在或不再可访问。

迁移文档中引用了GdkEvent API的更改,但我仍然不理解如何迁移该示例代码。

我做了一些不成功的盲目尝试,可能对这里的复制没有帮助(例如,在示例中用GdkEvent替换GdkEventButton(。有人更熟悉或有任何相关的例子吗?谢谢

我从Kjell那里得到了一个答案,链接了这些相关的gtkmm 4.0示例,以及一般建议:

在大多数(可能是所有(情况下,事件信号已被用于gtkmm3,使用Gtk::EventController的许多子类之一。

因此,要回答如何转换此gtkmm 3.0示例的具体问题:

bool on_button_press(GdkEventButton* event);
Gtk::Button button("label");
button.signal_button_press_event().connect( sigc::ptr_fun(&on_button_press) );

在gtkmm 4.0中,它将是这样的:

void on_button_press(int n_press, double x, double y);
Gtk::Button button("label");
Glib::RefPtr<Gtk::GestureClick> refGesture = Gtk::GestureClick::create();
refGesture->signal_pressed().connect(sigc::ptr_fun(&on_button_pressed));
button.add_controller(refGesture);

相关内容

  • 没有找到相关文章

最新更新