我想要一个 Gtk::Widgets 的列表,当点击它时我需要突出显示小部件,但是当用户按住按钮并拖动到另一个小部件时,第一个将“取消突出显示”并且新的将在 enter_notify 上突出显示。
我试过在多个组合中使用 on_enter_notify_event 和 on_button_press_event(是的,我正在添加事件),但每次我“按下”小部件时,它都会启动拖动事件,而 enter_notify 和 leave_notify 不会火。
有没有办法忽略拖动事件?我试过在它开始时结束它,但我认为问题是 on_notify 不会在鼠标按下时触发。还有其他方法吗?
如有任何帮助或建议,我们将不胜感激。
最佳答案
好吧,显然当一个小部件被激活或点击时,GdkDevice 会“抓取()”这个小部件并且只向那个小部件发送事件。所以我从事件中获取了设备,并在其上调用了“ungrab()”,以便它允许其他单元格接收事件。然后在我的其他单元格上检查 on_enter_notify_event 中的 event->state 以查看鼠标是否按下,瞧!该单元格突出显示。
bool cell::on_button_press_event(GdkEventButton* event) {
highlight_cell();
gdk_device_ungrab(event->device, event->time);
return true;
}
关于c++ - 鼠标按下时 Gtk::Widget on_enter_notify?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7598923/