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

时间:2016-05-02 11:30:16

标签: c++ qt inheritance

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

P.S。我假设这很清楚,没有提供源代码,特别是因为最小的例子无论如何都会很安静。如果有人希望无论如何都需要代码,请留下评论,我会添加它。

2 个答案:

答案 0 :(得分:1)

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

  

清除事件对象的accept flag参数,等效   调用setAccepted(false)。清除接受参数表示   事件接收者不想要事件。不需要的事件可能会   传播到父窗口小部件。

答案 1 :(得分:0)

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

void QWidgetChild::mousePressEvent(QMouseEvent *event)
{
    // Act
    // Pass to parent
    QWidget::mousePressEvent(event);

   // Generate new event for objects of sibling classes
   // How?
}

请参阅postEvent文档。