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();
}
网友评论