2016-11-27 27 views
0

我试图一次运行两个QWidget::mousePressEvent()处理程序。我有两个小部件,A和B. B从QLabel继承,A从QWidget继承。我已经超载了QWidget::mousePressEvent()他们两个。来自B的小部件正在获取光标位置QPoint,它正在工作。 一个小部件从B类获取这些信息,但不幸的是,只有当我点击小部件B以外的其他地方(蓝色区域)。 那么,如果我点击窗口小部件B的棕色空间,我应该怎么做才能从窗口小部件A运行QWidget::mousePressEvent()QWidget :: mousePressEvent()同时在两个小部件上

enter image description here

回答

1

event->ignore(),因为A是B的背后则大概是A是B的父(也许不是直接的,但只要事情,因为它是树倒认为没有),所以,如果在年底B::mousePressEvent() you event->ignore()然后事件将继续向下传播,并且还会触发A的mousePressEvent() ...最终,如果没有其他消息沿路径消耗事件。

此外,由于mousePressEvent()只是简单地调用一些功能,所以您也可以从B的A的事件处理程序手动执行此操作,只需要引用它即可,实现起来很简单。如果相关,您可能必须将坐标映射到父项。

+0

event-> ignore()正是我所需要的!非常感谢! (: – Tatarinho

相关问题