問題描述:
Windows XP下.
在QWebView中,有個quicktime的插件(播放視頻流),我要做的就是截獲/吸收插件上的鼠標事件。試了以下方法:
1.QWebView安裝事件過濾器,在eventFilter中屏蔽鼠標事件. 從調試中看,QWebView沒有接收到到鼠標事件.可是插件已經暫停了播放.
bool eventFilter(QObject *target, QEvent *event)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
qDebug("Ate key press %d", keyEvent->key());
return true;
}
else if(event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
qDebug("Ate MouseButtonPress %d", mouseEvent->button());
return true;
}
else if(event->type() == QEvent::MouseButtonRelease)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
qDebug("Ate MouseButtonRelease %d", mouseEvent->button());
return true;
}
else if(event->type() == QEvent::MouseButtonDblClick)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
qDebug("Ate MouseButtonDblClick %d", mouseEvent->button());
return true;
}
else
{
// standard event processing
return QObject::eventFilter(target, event);
}
}
2.QWebView上方蒙一個透明的部件.從調試中看,設置的透明屬性未生效.
QLabel* label = new QLabel(this,Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint);
label->setFixedSize(320,240);
label->move(0,0);
label->setAttribute(Qt::WA_TranslucentBackground);
label->setStyleSheet("background-color:rgba(255,255,255,0);");
label->show();
所以,怎麽解決呢?
[ 此帖被午小夜在2010-03-21 14:03重新编辑 ]