如何确定哪个兄弟姐妹收到事件

How to determine which sibling receieves the event?

本文关键字:事件 兄弟姐妹 何确定      更新时间:2023-10-16

QWidget类是多个重叠的QWidget同级的父级。当实现mousePressEvent时,只有最近构造的子级接收该事件。有没有办法让所有的兄弟姐妹都参加这个活动?或者更好的方法来确定哪个孩子应该接受它?


附言:如果不提供源代码,我假设这一点已经足够清楚了,尤其是因为最小的例子无论如何都会非常大。如果有人认为无论如何都需要代码,请留下注释,我会添加它。

您可能需要使用QEvent::ignore()函数在小部件中将事件标记为已忽略。这样做,您将把它传播到父窗口小部件。根据关于QEvent::ignore()功能的Qt文档:

清除事件对象的接受标志参数,相当于的调用setAccepted(false)。清除accept参数表示事件接收器不想要该事件。意外事件可能传播到父窗口小部件。

您应该在每个同级类的回调方法中生成新的事件。

void QWidgetChild::mousePressEvent(QMouseEvent *event)
{
    // Act
    // Pass to parent
    QWidget::mousePressEvent(event);
   // Generate new event for objects of sibling classes
   // How?
}

请参阅postEvent文档。