Qt开发-记一个QWebView访问谷歌的崩溃问题
2017-12-18 11:14
681 查看
打开Qt自带的浏览器例子browser,输入 https://stackoverflow.com/questions/25850803/qwebview-always-fails-to-load-website 结果程序直接崩溃。
google一天无果,曾经想过更换到webengine,但是由于项目是跨平台,如果更换到msvc,工作量太多,并且也不一定有QWebView稳定。
QWebView访问网页做了很多工作,比如https://stackoverflow.com/questions/25850803/qwebview-always-fails-to-load-website会获取网页的html,js等文件,所以会执行多次get操作,在其中访问某一个网页时出现错误,导致崩溃。
于是只能自己查找崩溃原因,下面列出步骤(当你的webview访问网页有问题时可以参考)
1、检查ssl文件是否在程序当前目录(debug版本直接放在Qt安装目录下的Qt5Network.dll的同级目录) ,即ssleay32.dll以及libeay32.dll文件
2、检查你是否对QWebSettings进行过设置(即webview->settings()->setAttribute,一般为默认)
3、分析访问结果,webview->page->networkAccessManager() 获取到QNetworkAccessManager通过他的finished信号获取错误码以及链接
connect(this->page()->networkAccessManager(),SIGNAL(finished(QNetworkReply*)),this,SLOT(slt_finished(QNetworkReply*)));
m_pNetWorkAccessManager->proxyFactory()->setUseSystemConfiguration(true);//使用系统配置
问题解决,不过还是要记得在浏览器发生QNetworkReply::UnknownNetworkError错误时,终止访问,并且弹出错误提示。
google一天无果,曾经想过更换到webengine,但是由于项目是跨平台,如果更换到msvc,工作量太多,并且也不一定有QWebView稳定。
QWebView访问网页做了很多工作,比如https://stackoverflow.com/questions/25850803/qwebview-always-fails-to-load-website会获取网页的html,js等文件,所以会执行多次get操作,在其中访问某一个网页时出现错误,导致崩溃。
于是只能自己查找崩溃原因,下面列出步骤(当你的webview访问网页有问题时可以参考)
1、检查ssl文件是否在程序当前目录(debug版本直接放在Qt安装目录下的Qt5Network.dll的同级目录) ,即ssleay32.dll以及libeay32.dll文件
2、检查你是否对QWebSettings进行过设置(即webview->settings()->setAttribute,一般为默认)
3、分析访问结果,webview->page->networkAccessManager() 获取到QNetworkAccessManager通过他的finished信号获取错误码以及链接
connect(this->page()->networkAccessManager(),SIGNAL(finished(QNetworkReply*)),this,SLOT(slt_finished(QNetworkReply*)));
void slt_finished(QNetworkReply * reply){ if(reply){ qDebug()<<"#######"<<reply->error()<<reply->url()<<"#######"; } }通过输出得到是在访问https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js,发生了QNetworkReply::UnknownNetworkError的错误,在google之后发现这是一个网络代理的问题,但是我使用火狐访问是没有问题的,所以只能是Qt浏览器没有使用网络代理的问题,于是找到了这个函数
m_pNetWorkAccessManager->proxyFactory()->setUseSystemConfiguration(true);//使用系统配置
问题解决,不过还是要记得在浏览器发生QNetworkReply::UnknownNetworkError错误时,终止访问,并且弹出错误提示。
相关文章推荐
- Qt4.8.5 QtWebKit QWebView 用户栈检查崩溃问题的思考
- 记录Qt与Cocos2dx结合时一个mac平台下崩溃的问题
- 搞定最为变态的一个Ubuntu下的问题---- 双系统环境下 Ubuntu只能访问百度、谷歌网站!
- 在QT框架下开发MFC主程序的一个插件遇到的问题
- vs2005开发qt程序时遇到的一个“奇怪”的问题
- Arcgis Server JS 开发,一个奇怪的问题(dojo未定义、机器名不能访问)
- Qt creator工程项目移植时因环境变换造成qmake错误的解决方案 1.问题描述:移植从他机上的qt工程项目,打开时提示: Qt Creator找到了一个由其他开发环境创建的设置文件,或许
- CAD二次开发中遇到一个无法解决的问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 在项目中遇到的一个并发访问时session不一致的问题
- 实战一个故障问题:出现打开方式拒绝访问这样的问题
- 开发一套系统的目的不是要来『让程式设计师写程式』,开发一套系统的目的是要来『解决一个问题』(转)
- 嵌入式IOEServer终于开发完成,相应的问题作一个系统阐述(WINCE)
- Word 2007 AddIn开发中的一个奇怪问题
- 解决一个问题,发布一个自己开发的小工具
- 今天做开发时遇到的一个vs2005的问题
- 学习类,笔记!关于一个函数里面定义多个类以及相互访问的问题
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 三层开发中的一个小问题
- 解决一个问题,发布一个自己开发的小工具