我正在尝试获取光标的坐标,以及在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);