qt-webengine-MouseEvent包含move、press、release

在将qt-webkit替换为webengine后,遇到HTML页面无法拖动的问题。解决方法是通过重写eventFilter并启用鼠标跟踪(setMouseTracking(true)),同时在应用实例中安装事件过滤器(QApplication::instance()->installEventFilter(this))。尽管Qt官方文档未明确提及此步骤,但有用户在Bug Tracker中提到相关问题。
摘要由CSDN通过智能技术生成

从qt-webkit替换成webengine之后,发现加载html页面之后不能够拖动,百度了好久没解决问题,webengine之后的事件全部通过继承eventFilter来实现。需要先重写eventFilter事件,再将事件转发至需要移动的窗体消息。但是有一点记得调用之前一定要加上这一段话( setMouseTracking(true);
  QApplication::instance()->installEventFilter(this);)

Qt的官网上没看到由此类似说明,看到有人提的bug([QTBUG-43602] Mouse events are not handled in WebEngineView - Qt Bug Tracker)但是直是为了解决paintevent事件

#include "mywebview.h"


#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QSslError>
#include <QDropEvent>
#ifndef USE_WEBENGINE
#include <QWebFrame>
#else
#endif
#include <QApplication>
#include <QPalette>
#include <QMimeData>
#include <QMenu>
#include <QDebug>

#define _DEBUG_WEB_PAGE

#ifdef USE_WEBENGINE
myWebView::myWebView(QWidget *parent) :
    QWebEngineView(parent)
#else
myWebView::myWebView(QWidget *parent) :
    QWebView(parent)
#endif

{

//	//WEBVIEW透明
//    QPalette pal = this->page()->palette();
//    pal.setBrush(QPalette::Base, Qt::transparent);
//    this->setPalette(pal);

	//调试窗口
#ifndef USE_WEBENGINE
    QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
    inspector = new QWebInspector( this );
    inspector->setWindowFlags( Qt::WindowStaysOnTopHint | Qt::Dialog );
   inspector->hide();
    this->setContextMenuPolicy(Qt::NoContextMenu);
	connect(this->page()->networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
		SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
#endif

//	this->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
//	this->page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
    setMouseTracking(true);
     QApplication::instance()->installEventFilter(this);
    //setMouseTracking(true)
    // this->setContextMenuPolicy(Qt::NoContextMenu);
}

myWebView::~myWebView()
{
#ifndef USE_WEBENGINE
	if(NULL != inspector)
	{
		delete inspector;
		inspector = NULL;
	}
#endif
}



bool myWebView::eventFilter(QObject *src, QEve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganglee_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值