我正在显示HTML网页的触摸Linux设备上运行带有QWebView的Qt 5.9.4应用。
当用户将手指捏在屏幕上时,他们会放大网页。我想禁用该行为,因为所有网页均应100%全屏显示。
我可以通过在视口中添加user-scalable=no
来在网页中暂时禁用它(因为我拥有自己的代码),但是从长远来看,它将无法正常工作,因为并非每个网页都具有该功能。
我尝试在应用程序的不同元素上使用eventFilter,但无法捕获任何手势或鼠标事件。
这是我在QDialog中创建Web视图的方式:
void Dialog::createWebView() {
view = new QWebEngineView(this);
profile = new QWebEngineProfile();
page = new QWeEnginePage(profile);
view->setPage(page);
view->setUrl(QUrl(path));
}
这是我的eventFilter类:
EvFilter::EvFilter(QObject *parent) : QObject(parent)
{
}
bool EvFilter::eventFilter(QObject *obj, QEvent *event)
{
qDebug() << event->type() << "\n";
return QObject::eventFilter(obj, event);
}
我尝试做
EvFilter* evf = new EvFilter();
view->installEventFilter(evf);
以及所有其他元素(配置文件,页面,对话框),但似乎未获得与鼠标或手势相对应的任何事件。 我究竟做错了什么?如何在整个网络视图中阻止这种行为?
将事件侦听器添加到QApplication对象之后,我可以检测到TouchBegin,TouchUpdate,TouchCancel和TouchEnd事件,但没有其他事件(没有Gesture事件)。我不知道如何检测touchevent是否为缩放手势。
答案 0 :(得分:0)
我认为您可以在Dialog上使用它(未测试)。我还有其他一些小部件,它显示了QML QtWebView,而我为防止该小部件的子级获得捏手势而做的事情是:
this->grabGesture(Qt::PinchGesture, Qt::DontStartGestureOnChildren);
这可以防止基础小部件接收PinchGesture,以便您可以自行处理。