Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Gtk::当鼠标按下时,输入小部件通知?_C++_C_Gtk_Gtkmm - Fatal编程技术网

C++ Gtk::当鼠标按下时,输入小部件通知?

C++ Gtk::当鼠标按下时,输入小部件通知?,c++,c,gtk,gtkmm,C++,C,Gtk,Gtkmm,我正在尝试创建一个Gtk::Widgets列表,当单击该列表时,我需要高亮显示该窗口小部件,但当用户按住按钮并拖动到另一个窗口小部件时,第一个窗口小部件将“取消高亮显示”,新窗口小部件将在输入时高亮显示 我尝试过多次组合使用on_enter_notify_事件和on_button_press_事件(是的,我正在添加事件),但每次我“按下”小部件时,它都会启动一个拖动事件,并且enter_notify和leave_notify都不会触发 有没有办法忽略拖动事件?我已经尝试在它开始时结束它,但我认为

我正在尝试创建一个Gtk::Widgets列表,当单击该列表时,我需要高亮显示该窗口小部件,但当用户按住按钮并拖动到另一个窗口小部件时,第一个窗口小部件将“取消高亮显示”,新窗口小部件将在输入时高亮显示

我尝试过多次组合使用on_enter_notify_事件和on_button_press_事件(是的,我正在添加事件),但每次我“按下”小部件时,它都会启动一个拖动事件,并且enter_notify和leave_notify都不会触发

有没有办法忽略拖动事件?我已经尝试在它开始时结束它,但我认为问题是,当鼠标按下时,on_通知不会触发。还有别的方法吗


任何帮助或建议都将不胜感激。

好的,显然当一个小部件被激活或单击时,GdkDevice“grab()”将激活该小部件,并且只向该小部件发送事件。因此,我从事件中获取了设备,并对其调用了“ungrab()”,以便它允许其他单元格接收事件。然后在我的其他单元格中,我检查on_enter_notify_事件中的event->state,看看鼠标是否按下,瞧!单元格将高亮显示

bool cell::on_button_press_event(GdkEventButton* event) {
  highlight_cell();

  gdk_device_ungrab(event->device, event->time);

  return true;
}

也许您应该通过组合按钮按下事件/按钮释放事件来处理突出显示。@erick2red这是我最初使用的方式。拖动事件仍在启动,我无法突出显示其他单元格。然后,看看[GTK按钮代码]()我在寻找什么?我已经扩展了Gtk::Layout,这样我就可以有两个标签和一个图像,所以我认为按钮代码对我正在做的事情没有任何影响。我认为必须有一种方法来禁用“begin_drag”事件的触发,或者有一种完全不同的方法。