QWidget::mousePressEvent() 同时在两个小部件上
QWidget::mousePressEvent() on two widgets at once
我正在尝试同时 运行 两个 QWidget::mousePressEvent()
处理程序。我有两个小部件,A 和 B。
B 继承自 QLabel
,A 继承自 QWidget
。我已经在他们两个上超载了 QWidget::mousePressEvent()
。来自 B 的小部件正在获取 QPoint
光标位置并且它正在工作。
一个小部件正在从 class B 获取此信息,但不幸的是,只有当我单击小部件 B 之外的其他地方(蓝色区域)时才会这样。
那么,如果我单击小部件 B 中的棕色 space,我应该如何处理小部件 A 中的 运行 QWidget::mousePressEvent()
?
有event->ignore()
,因为A在B的后面,所以推测A是B的父级(可能不是直接的,但只要它在树下就没关系),所以如果在最后B::mousePressEvent()
你 event->ignore()
然后该事件将继续向下传播并将触发 A 的 mousePressEvent()
以及......最终,如果没有其他东西沿着路径消耗该事件。
此外,由于 mousePressEvent()
可能只是调用一些功能,您也可以从 B 的 A 事件处理程序中手动执行此操作,您所需要的只是对它的引用,实现起来很简单。如果相关,您可能必须将坐标映射到父级。
我正在尝试同时 运行 两个 QWidget::mousePressEvent()
处理程序。我有两个小部件,A 和 B。
B 继承自 QLabel
,A 继承自 QWidget
。我已经在他们两个上超载了 QWidget::mousePressEvent()
。来自 B 的小部件正在获取 QPoint
光标位置并且它正在工作。
一个小部件正在从 class B 获取此信息,但不幸的是,只有当我单击小部件 B 之外的其他地方(蓝色区域)时才会这样。
那么,如果我单击小部件 B 中的棕色 space,我应该如何处理小部件 A 中的 运行 QWidget::mousePressEvent()
?
有event->ignore()
,因为A在B的后面,所以推测A是B的父级(可能不是直接的,但只要它在树下就没关系),所以如果在最后B::mousePressEvent()
你 event->ignore()
然后该事件将继续向下传播并将触发 A 的 mousePressEvent()
以及......最终,如果没有其他东西沿着路径消耗该事件。
此外,由于 mousePressEvent()
可能只是调用一些功能,您也可以从 B 的 A 事件处理程序中手动执行此操作,您所需要的只是对它的引用,实现起来很简单。如果相关,您可能必须将坐标映射到父级。