您的位置:首页 > 移动开发

关于Qt中webView无法响应mouseEvent的解决办法

2015-09-12 10:51 691 查看
本人在写一个浏览器程序时,想通过鼠标右键的手势功能(按住并滑动)来实现浏览器的快捷操作(这里我实现了前进和后退操作),但是当我在mainwindow.cpp中写好方法(mouseEvent)后,运行时,出现一个很奇怪的现象。在网页界面,鼠标右键按压后移动,界面没有发生任何变化,但是当我在网页界面以外的缝隙却可以响应。由于是新手,对这个问题并不清楚

google一番后,找到了原因。

因为我是在mainwindow中重写的mouseEvent方法,那么在webview中无法相应该方法。正确做法是,继承QWebView,然后重写mouseEvent方法。

下面是源代码。

头文件
---

#ifndef WEBVIEW_H
#define WEBVIEW_H
#include<QMouseEvent>
#include<QWebView>
#include<QDebug>
class WebView:public QWebView
{

public:
WebView(QWidget * parent=0);
~WebView();
protected:
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);

private:
QPoint offset;
QPoint temp;
};
#endif // WEBVIEW_H


CPP文件
-----

#include "webview.h"
WebView::WebView(QWidget * parent):QWebView(parent)
{
}
WebView::~WebView()
{

}
void WebView::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{   temp=event->globalPos();
qDebug()<<temp;
}
}
void WebView::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{
offset=event->globalPos();
int bet=offset.rx()-temp.rx();
qDebug()<<bet;
if(bet>50)
{
qDebug()<<bet;
//view->page()->triggerPageAction(QWebPage::Stop);
page()->triggerAction(QWebPage::Reload);
}
}
}


这个程序我只是重写了mousePressEvent 与mouseReleaseEvent方法,其他方法同理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: