我正在尝试QWidget::mousePressEvent()
一次运行两个处理程序。我有两个小部件,A 和 B。B 继承自QLabel
,A 继承自QWidget
。我已经超载QWidget::mousePressEvent()
了他们两个。B 的小部件正在获取QPoint
光标位置并且它正在工作。小部件正在从 B 类获取此信息,但不幸的是,只有当我单击小部件 B 之外的其他位置(蓝色区域)时。那么QWidget::mousePressEvent()
如果我单击小部件 B 的棕色空间,我应该怎么做才能从小部件 A 运行?
问问题
327 次
1 回答
1
有event->ignore()
,因为 A 在 B 后面,那么大概 A 是 B 的父级(可能不是直接的,但只要它在树下就无关紧要),所以如果在你最后,B::mousePressEvent()
那么event->ignore()
事件将继续向下传播并将也触发 A mousePressEvent()
......最终,如果没有其他东西会消耗该事件。
此外,由于大概mousePressEvent()
只是调用了一些功能,您也可以从 B 的 A 事件处理程序手动执行此操作,您所需要的只是对它的引用,这很容易实现。如果它们相关,您可能必须将坐标映射到父级。
于 2016-11-27T12:59:07.553 回答