3
我有一個簡單的測試案例應用:QT5,透明窗口和滾輪事件
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中的錯誤嗎?任何可能的解決方法?
解決類似的問題似乎並沒有工作也: How to create a semi transparent window in WPF that allows mouse events to pass through
(QT 5.6.1的Windows 10)
Windows 10改變了很多。您是否嘗試過轉動*設置* - > *設備* - > *鼠標和觸控板*:*當我將鼠標懸停在它們上面時,滾動非活動窗口*關閉?不是你的問題的答案,而是縮小這是什麼原因造成的。 – IInspectable
@IInspectable哇,不知道這個設置)但切換它不會改變行爲... – vines
你檢查過它沒有爲其焦點策略設置'Qt :: WheelFocus'標誌嗎?這是不太可能的,但這是我能想到的唯一的事情。 –