Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
Qt 确定鼠标事件:将鼠标悬停在离开父对象的子窗口小部件上_Qt_Qt5_Qwidget_Qevent_Qmouseevent - Fatal编程技术网

Qt 确定鼠标事件:将鼠标悬停在离开父对象的子窗口小部件上

Qt 确定鼠标事件:将鼠标悬停在离开父对象的子窗口小部件上,qt,qt5,qwidget,qevent,qmouseevent,Qt,Qt5,Qwidget,Qevent,Qmouseevent,我有两个小部件,一个是父部件,一个是子部件: 访问红色小部件的实现后,是否可以确定光标悬停在红色小部件进入蓝色小部件的时刻,而无需实现任何事件处理程序或派生蓝色小部件 红色区域具有明确的厚度(例如5px)。如果不从红色小部件捕获一个鼠标移动事件和从蓝色小部件捕获一个鼠标移动事件,您就无法捕获转换,因为鼠标可以在屏幕上跳跃,并且可能不会连续移动。如果不派生:使用事件过滤器,QEvent类型为HoverEnter和HoverLeave 带样式表 QWidget:hover{} 已尝试if(eve

我有两个小部件,一个是父部件,一个是子部件:

访问
红色
小部件的实现后,是否可以确定光标悬停在
红色
小部件进入
蓝色
小部件的时刻,而无需实现任何事件处理程序或派生
蓝色
小部件


红色区域具有明确的厚度(例如5px)。

如果不从红色小部件捕获一个鼠标移动事件和从蓝色小部件捕获一个鼠标移动事件,您就无法捕获转换,因为鼠标可以在屏幕上跳跃,并且可能不会连续移动。

如果不派生:使用事件过滤器,QEvent类型为HoverEnter和HoverLeave

带样式表

QWidget:hover{}

已尝试
if(event->type()==QEvent::HoverEnter){qDebug()@JacobKrieg我提供了许多关于事件过滤器的答案。因此,请检查其中一个答案:它描述了如何安装和使用过滤器。试试看。它是否有效?我不会使用事件过滤器,因为我希望它在不知道blue…qwidget的名称的情况下工作。我希望blue qwidget可以由用户配置,并且o让他添加它…我认为eventfilter的方法有点粗糙…@JacobKrieg如果它是widget,那么你可以设置特殊的对象名称,当你发现事件筛选器中的某个对象有这个特殊名称时(你知道这个名称,你设置这个名称,而不是用户)然后你就知道你需要的是小部件。你想用这些信息做什么?如果你只想改变小部件的外观,那么
setStyleSheet
应该做这项工作。我不想只改变外观。当鼠标进入和离开该区域时,我需要光标进入。问题是当光标离开该区域时,我要将其重置为以前的格式,所以只需在两个窗口小部件上设置。我理解,但我需要为每个边缘使用不同的光标。该功能非常方便,但它只提供一种光标类型。我希望红色区域作为边框,您可以调整窗口大小。对于此类功能,我将为每个边缘添加单独的窗口小部件并合并它只是视觉上的。