QWebEngineView 过滤事件 (鼠标滚轮+ctrl)

我们知道,要对Qt窗口组件进行事件过滤可以重写eventFilter函数,并且需要将其InstallEventFilter例如:

MainWindow::MainWindow(QWidget *parent) : QWidget(parent)
{
    setWindowTitle(u8"example");
    view.setContextMenuPolicy(Qt::NoContextMenu);//禁用右键

    view.installEventFilter(this); //view 是一个组件窗口

    layout.addWidget(&view);
    setLayout(&layout);
    show();
}

但是QWebEngineView在加载界面后,被本身的child接收了鼠标键盘事件信息,与其他组件不同,需要对其child进行installEventFilter。

解决方法可参考以下链接:

class WebEngineView : public QWebEngineView
{
    Q_OBJECT
pubilc:
    WebEngineView(){}

    bool event(QEvent * ev){
        if(evt->type()== QEvent::ChildPolished ){
            QChildEvent* ce=static_cast<QChildEvent*>(evt);
            child = ce->child();
            if(child){
                child->installEventFilter(this);
            }
        }
        return QWebEngineView::event(evt);
    }

    bool eventFilter(QObject *obj, QEvent *ev)
    {
        if (ev->type() == QEvent::Wheel ){
            qDebug()<<"wheel---";
            if (QApplication::keyboardModifiers () == Qt::ControlModifier){
                qDebug()<<"wheel+ctrl---";
                return true;
            }
        }
        return QWebEngineView::eventFilter(obj,ev);
    }

private:
    QObject* child;

};

how-can-i-get-paint-events-with-qtwebengine

QTBUG-60701

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值