0

我有以下小部件的层次结构:

root (QWidget)
 |-> first child (QWidget)
 |---> label A (QLabel)
 |---> label B (QLabel)
 |-> second child (QButton)
 |-> third child (QButton)

我想要实现的是接收鼠标释放事件first child(或两者label Alabel B无论如何行为都是一样的)

我尝试使用事件过滤器

MyWidget(QWidget* parent) : QWidget(parent) {
    setupUi(this);
    // some other stuff
    mFirstChild->installEventFilter(this);
}

bool MyWidget::eventFilter(QObject* object, QEvent* event) {
    if (event->type() == QEvent::MouseButtonRelease) {
        // do stuff
        return true;
    }
    return QWidget::eventFilter(object, event);
}

我的问题是我的测试doStuff()方法永远不会被调用。我正确接收到 Enter、Leave、Repaint、MousePress、MouseDblClick 等事件,但我从未得到 MouseRelease(顺便说一下 MouseMove)。我在这里遗漏了一些明显的东西吗?

编辑:经过更多研究,我尝试使用WA_TransparentForMouseEvents属性,它没有改变任何东西。

4

0 回答 0