我正在尝试使用 Rust 和 gtk4-rs 在我的应用程序中的 TreeView 上捕获右键单击事件。我没有看到鼠标按钮事件的特定 EventController。我确实看到了 EventControllers 用于键盘按下和运动事件之类的事情。我最终使用了 EventControllerLegacy 并且只检测了闭包内的事件类型,但我觉得我在这里遗漏了一些东西。还有其他方法我应该从鼠标获取按钮按下事件吗?这是我的代码:
pub fn build_tree_view() -> TreeView {
let tree_view: TreeView = TreeView::new();
tree_view.set_headers_visible(false);
let event_controller = EventControllerLegacy::new();
event_controller.connect_event(|controller, event| {
if event.event_type() == ButtonPress {
let button_event = event.clone().downcast::<ButtonEvent>().unwrap();
if button_event.button() == GDK_BUTTON_SECONDARY as u32 {
println!("got mouse button: {}", button_event.button());
}
}
return Inhibit(false);
});
tree_view.add_controller(&event_controller);
return tree_view;
}
我认为我遗漏了什么的原因是EventControllerLegacy的文档说明了以下内容:
EventControllerLegacy 是一个事件控制器,提供对事件流的原始访问。只有在其他事件控制器或手势都没有完成这项工作时,才应将其用作最后的手段。
我正在使用 Rust 1.56.0 和 gtk4-rs 0.4.2
谢谢