c++ - QWebEngineView加载url后直接点击链接没有反应要怎么解决?
迷茫
迷茫 2017-04-17 14:35:11
0
2
1163

我用QWebEngineView加载一个url后,直接点击链接没有任何反应,要在链接上右键点击,然后通过菜单的Follow Link才能打开。初学Qt能力有限,找了QWebEngineView和QWebEnginePage的文档愣是没看到有相关的方法,求大家帮忙看看。

网上资料太少了,全是QWebView的,可是我用的是Qt5.6,已经没有这个模块了。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

reply all (2)
大家讲道理

QWebEngineView中有下面的方法:

QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)

在鼠标左键点击的时候会触发这个方法,你把它重载一下,用你自己的实现就可以了。

    小葫芦

    这个bug与createWindow函数好像没关系。
    在QWebEngineView里面,用户点击网页的链接时,会触发信号:
    urlChanged(QUrl)
    但是QWebEngineView不会自动去加载新的链接。

    所以需要自己为urlChanged(QUrl)新建一个槽函数,自己手动加载参数里的新链接。
    比如:

    connect(m_pView, SIGNAL(urlChanged(QUrl)), this, SLOT(onUrlChanged(QUrl)));

    //网页链接地址
    //用户点击网页触发
    //QWebEngineView有毛病,用户点击网页里的链接时,只触发urlChanged(QUrl)信号
    //不自动加载新链接网页,需要手动加载
    void MainWindow::onUrlChanged(const QUrl &url)
    {

    //地址栏的旧网址 QUrl old = QUrl( m_pURLEdit->text() ); //链接有变化才更新,用户点击网页里的新链接会触发 if(url != old) { m_pURLEdit->setText( url.toString() ); //用户点击了新网页,但是没自动加载,手动刷新 m_pView->load(url);//要放在if判断内部,否则容易无限刷新,死循环 } qDebug()<

    }

    **

    示例代码: http://pan.baidu.com/s/1gfc7BXp

    **

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!