先是在VS中运行如下代码:
QWebView *webView = new QWebView(this);
setCentralWidget(webView);
webView->load(QUrl("https://www.youku.com/"));
运行结果如下,是一个空白的界面:
百度了很久,发现百度有点废,没有直接找到问题的原因和完整的解决方法,后面我又尝试了QtCreator来写代码和运行,不过仍然无法正常先是网页,还是个空白界面。不过幸运的是我在QtCreator的输出窗口看到了这些提示:
Starting F:\Code\QT\build-QWebViewTest-Desktop_Qt_5_4_1_MSVC2010_OpenGL_32bit-Debug\debug\QWebViewTest.exe...
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
后来我还专门验证了,VS运行时输出窗口没有打印出这些东西。
后面又继续找,看到了一些关于OpenSSL的说明,说是需要安装这个东西,我又去下载安装了一个,还是不行。后面又看到有的人说要把“libeay32.dll”和“ssleay32.dll"放到exe所在目录,我在电脑上一搜libeay32.dll,发现好多目录下都有这个:
从上面可以发现其实QT安装后就有这2个dll了,于是我直接把QT目录下的2个dll复制到exe所在目录,然后运行,结果问题解决了,网页可以正常显示了。不过有的网页加载非常缓慢,比如这个优酷的首页加载出来感觉有30S了,哈哈。
下面附上2个有用的链接:
这个介绍了OpenSSL在QT中的使用
https://www.cnblogs.com/widekuan/p/4134537.html
这个是OpelSSL下载地址
http://slproweb.com/download/Win32OpenSSL_Light-1_1_1c.exe