c++ - QWebEngineView加载url后直接点击链接没有反应要怎么解决?
问题描述
我用QWebEngineView加载一个url后,直接点击链接没有任何反应,要在链接上右键点击,然后通过菜单的Follow Link才能打开。初学Qt能力有限,找了QWebEngineView和QWebEnginePage的文档愣是没看到有相关的方法,求大家帮忙看看。
网上资料太少了,全是QWebView的,可是我用的是Qt5.6,已经没有这个模块了。
问题解答
回答1:在QWebEngineView中有下面的方法:
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
在鼠标左键点击的时候会触发这个方法,你把它重载一下,用你自己的实现就可以了。
回答2:这个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()<<url;
}
**
示例代码: http://pan.baidu.com/s/1gfc7BXp**
相关文章:
1. mysql - 在不允许改动数据表的情况下,如何优化以varchar格式存储的时间的比较?2. css - chrome下a标签嵌套img 显示会多个小箭头?3. javascript - 网页打印页另存为pdf的代码一个问题4. vim - docker中新的ubuntu12.04镜像,运行vi提示,找不到命名.5. java中返回一个对象,和输出对像的值,意义在哪儿6. css3 - 纯css实现点击特效7. docker网络端口映射,没有方便点的操作方法么?8. mysql 为什么主键 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?9. javascript - Img.complete和img.onload判断图片加载完成有什么区别?10. javascript - 有适合开发手机端Html5网页小游戏的前端框架吗?
