簡體   English   中英

Qt5,透明窗口和車輪事件

[英]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();
}

不透明的小部件只會報告何時獲得鼠標點擊和滾輪事件。 透明小部件覆蓋不透明小部件。

鼠標點擊按預期工作:

  • 通過透明區域落入不透明小部件;
  • 在其繪制的(因此不透明的)區域中單擊時,被透明小部件捕獲。

輪子事件被透明小部件捕獲,無論它們發生在何處。 用於Qt4.8的相同設置。 這是Qt5中的錯誤嗎? 有可能的解決方法嗎?

類似問題的解決方案似乎也不起作用: 如何在WPF中創建一個允許鼠標事件通過的半透明窗口

(Qt 5.6.1,Windows 10)

作為Qt錯誤被接受,請參閱https://bugreports.qt.io/browse/QTBUG-53418了解詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM