mac下QWebEngineView禁用手势放大和下拉效果

QWebEngineView手势放大原因

Qt具备手势相关的类和信号的,是支持mac原声手势的。

Qt的事件处理

Qt的类可以通过installEventFilter注册观察者,只要预先在观察者内,关注对应信号,直接返回true就可以做到将信号拦截于QWebEngineView处理之前,所以写一个类继承QObject,直接installEventFilter到QApplication里,将手势信号拦截在程序输入时,使得所有的界面都忽略mac原声手势

代码如下

#include <QObject>

class Filter : public QObject
{
    Q_OBJECT
public:
    explicit Filter(QObject *parent = nullptr);

protected:
    bool eventFilter(QObject *obj, QEvent *event);
};
#include "Filter.h"
#include <QDebug>
#include <QEvent>

Filter::Filter(QObject *parent) : QObject(parent)
{

}

bool Filter::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::NativeGesture){
        qDebug() << Q_FUNC_INFO << obj << event->type();
        return true;
    }

    return false;
}
#include "MainWindow.h"

#include <QApplication>
#include "Filter.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Filter f;
    a.installEventFilter(&f);
    MainWindow w;
    w.show();
    return a.exec();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。