Qt5,透明window和wheel事件

Qt5, transparent window and wheel events

我有一个最简单的测试用例应用程序:

TransWidget.cpp:

TransWidget::TransWidget(QWidget *parent) :
    QWidget(parent, Qt::Window | Qt::FramelessWindowHint)
{
    setAttribute(Qt::WA_ShowWithoutActivating);
    setAttribute(Qt::WA_TransparentForMouseEvents);
    setAttribute(Qt::WA_TranslucentBackground);
}

void TransWidget::paintEvent(QPaintEvent *)
{
    // some code to mark the presence of the window
}

void TransWidget::wheelEvent(QWheelEvent * ev)
{
    ev->ignore(); // keeps getting here no matter what I try!
}

main.cpp:

#include "TransWidget.h"
#include "OpaqueWidget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    OpaqueWidget o;
    auto t = new TransWidget(&o);

    o.show();
    t->show();

    return a.exec();
}

不透明小部件仅在获得鼠标点击和滚轮事件时进行报告。透明小部件覆盖不透明小部件。

鼠标点击按预期工作:

Wheel 事件无论发生在何处都会被透明小部件捕获。 用于 Qt4.8 的相同设置。它是 Qt5 中的错误吗?任何可能的解决方法?

类似问题的解决方案似乎也不起作用: How to create a semi transparent window in WPF that allows mouse events to pass through

(Qt 5.6.1, Windows 10)

已接受为 Qt 错误,请参阅 https://bugreports.qt.io/browse/QTBUG-53418 了解详细信息。