QML开发避坑指南(二):加载https图像

4 篇文章 1 订阅
(1)开篇

 在qml Image组件 和 QWebEngineView组件的html文档的<img>标签,同是加载远程(https)图像,
结果前者(source属性)显示异常,后者(src属性)正常。
 问题不大,折腾不短,特此笔记,备忘。

(2)过程
(2.1)问题描述

mql代码中Image组件无法正常显示图片,而QWebEngineView组件的html文档的<img>标签可以。
查看应用程运行输出日志,有如下字样:

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
qrc:/main.qml:41:13: QML Image: TLS initialization failed

初步定位:qml框架默认不带ssl,而QWebEngine是带有的。
初步想法:找到相关 lib 放到公共路径即可。

(2.2)对策1(参考网上经验)

从Qt安装目录(Tools/mingwXXX_32/64/opt/bin)拷贝【libeay32.dll】和【ssleay32.dll】,
放入公共路径(C:/Windows/system32)。但结果 无效
(评:问题应该是ssl的版本不匹配导致,查看文件libeay32.dll的属性可知版本是1.0字样)

(2.3)对策2(参考网上经验)

 进一步了解启动过程中对ssl的检测情况,在入口添加调试:
【main.cpp】片段:

。。。
//Detect SSL lib
qDebug() << "QSslSocket::sslLibraryBuildVersion " << QSslSocket::sslLibraryBuildVersionString();
qDebug() << "QSslSocket::supportsSsl() " << QSslSocket::supportsSsl();

const QUrl url(QStringLiteral("qrc:/main.qml"));
。。。

打印输出如下:

QSslSocket::sslLibraryBuildVersion "OpenSSL 1.1.1g  21 Apr 2020"
QSslSocket::supportsSsl()  false

官网下载OpenSSL 对应版本的安装包。结果 有效
(评:对策2行之有效,靠谱)

(2.3)对策3

 笔者依据 对策2 中所依赖的openssl lib,在Qt安装目录【Tools\QtCreator\bin】和
【Tools\QtDesignStudio\bin】中发现相关的lib:【libssl-1_1-x64.dll】和【libcrypto-1_1-x64.dll】,
直接使用。
(评:对策3可视为 对策2 的取巧,小技)

(3)小结

 偶尔因为一些似是而非的理解或 思维定势 而浪费时间,所以特此备忘。

相关文档
  1. QML开发避坑指南(一):图像资源的加载
  2. QML开发避坑指南(三):webchannel中js的加载顺序
  3. QML开发避坑指南(四):ImageProvider的使用
  4. QML开发避坑指南(五):QML常用类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值