鼠标按下小部件,但哪一个?

时间:2011-02-17 16:54:20

标签: qt

考虑使用Qt Designer设计的窗口。很多子小部件。这个窗口有一个QWidget派生类,它实现了QWidget的虚拟鼠标方法(mousePressEvent,mouseReleaseEvent,mouseMoveEvent)

某些子窗口小部件没有控件,并在样式表中定义为“background:transparent”

我的问题:

当点击这样一个透明的子窗口小部件时,我确实在我的QWidget派生类中调用了MousePressEvent。那一切都很好。但我想知道刚刚点击了WHICH子窗口小部件。我想避免几何比较,将点击位置映射到子窗口小部件的尺寸。

有没有办法从mouseEvent对象获取此信息?我似乎无法看到任何与鼠标事件的始发者相关的内容。

2 个答案:

答案 0 :(得分:1)

  1. 您应该使用重新实现的bool eventFilter(QObject *obj, QEvent *event);函数编写类(继承自QObject)。
  2. 您应该在所有需要的子窗口小部件中安装此类的实例作为事件过滤器:http://doc.qt.io/qt-5/qobject.html#installEventFilter
  3. 在重新实现的bool eventFilter(QObject *obj, QEvent *event);函数中,您可以识别哪些子窗口小部件首先获得MouseEvent。

答案 1 :(得分:0)