Ubuntu/Windows QML加载地图所需要的openssl库安装

本文介绍如何为Qt项目配置SSL支持,包括在Windows和Ubuntu环境下安装和配置openssl库的方法。针对Ubuntu环境,提供从下载到安装openssl的具体步骤,并解决qt.network.ssl:QSslSocket::connectToHostEncrypted:TLSinitializationfailed等问题。

如果是Windows,下载地址及安装方法参考:

https://www.cnblogs.com/qq702368956/p/13363586.html?utm_source=tuicool

(注:一开始放到bin目录下是可以的,后来Qt中加载地图时还是提示qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed,可以直接将那两个库放到工程生成的exe下)

如果是Ubuntu,按照下面步骤安装


0.安装文件链接

链接:https://pan.baidu.com/s/1B2I1So4fD6g5uSR_i_J83g 
提取码:0000 


1.是否含有openssl库验证

包含QSslSocket头文件

使用    qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();进行验证,没有检测到会输出false。


2.支持版本

qDebug()<<QSslSocket::sslLibraryBuildVersionString();

我使用Qt5.14测试,输出如下:


3.下载

如果是ubuntu,在这个网址(https://www.openssl.org/source/),下载1.1.1版本


4.安装

在压缩包路径下打开终端,输入下面命令移动至/usr/local/路径下

sudo mv openssl-1.1.1h.tar.gz /usr/local/

进入/usr/local路径,在此打开终端,进行解压

sudo tar xvzf openssl-1.1.1h.tar.gz

进入解压后的文件夹,依次执行

sudo ./config
sudo make
sudo make install

5.测试

查看版本:

openssl version

 输出版本信息,则证明安装成功。

 如果加载地图仍然提示qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed,尝试将/usr/local/openssl-1.1.1h文件夹下的libcrypto.a与libssl.a复制到工程生成的可执行文件夹下。


6.可能出现的问题

我首先安装了1.1.0版本,是2016年的,在Qt中加载地图依然提示错误,于是下载1.1.1版本,按照上述步骤进行安装,最后查看版本的时候,提示openssl:error while loading shared libraries:libssl.so.1.1,参考下面文章,进行解决。

openssl: error while loading shared libraries: libssl.so.1.1

 

kyy@kyy-Legion-Y7000P-IRX9:~$ sudo apt update 命中:1 http://mirrors.aliyun.com/ubuntu focal InRelease 命中:2 http://mirrors.aliyun.com/ubuntu focal-security InRelease 命中:3 http://mirrors.aliyun.com/ubuntu focal-updates InRelease 命中:4 http://mirrors.aliyun.com/ubuntu focal-proposed InRelease 命中:5 http://mirrors.aliyun.com/ubuntu focal-backports InRelease 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有 393 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。 kyy@kyy-Legion-Y7000P-IRX9:~$ sudo apt upgrade 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 正在计算更新... 完成 The following security updates require Ubuntu Pro with 'esm-infra' enabled: libsoup-gnome2.4-1 libpython3.6-minimal python-twisted-core libcups2 libcurl4 gir1.2-soup-2.4 libapt-inst2.0 libssh-4 libpython3.6-dev libgs9 python-twisted-bin libpython3.6-stdlib libcdio17 libfcgi-perl python3-pil libpython3.6 python3.6 libapt-pkg5.0 libprocps6 libvpx5 libsoup2.4-1 python3.6-minimal python-cryptography cups-filters libglib2.0-dev-bin cups-ppdc libcupsmime1 libcurl4-openssl-dev libglib2.0-bin python-pkg-resources libglib2.0-dev ghostscript python-setuptools ghostscript-x libmysqlclient20 libgs9-common cups-filters-core-drivers libcupsppdc1 ca-certificates cups-bsd python-idna cups-core-drivers cups-daemon python3.6-dev python-twisted libcupsimage2 libpoppler73 cups curl libcupscgi1 cups-client cups-ipp-utils libglib2.0-0 python-pil libcurl3-gnutls libssl1.0.0 Learn more about Ubuntu Pro at https://ubuntu.com/pro 下列软件包的版本将保持不变: appstream colord cups cups-bsd cups-client cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ipp-utils cups-ppdc curl cython dash deja-dup docutils-common dpkg evolution-data-server fwupd fwupdate gazebo9 gazebo9-common gazebo9-plugin-base gdal-data ghostscript ghostscript-x gir1.2-freedesktop gir1.2-glib-2.0 gir1.2-gnomedesktop-3.0 gir1.2-gst-plugins-base-1.0 gir1.2-gtk-2.0 gir1.2-gtk-3.0 gir1.2-ibus-1.0 gir1.2-javascriptcoregtk-4.0 gir1.2-pango-1.0 gir1.2-polkit-1.0 gir1.2-rb-3.0 gir1.2-soup-2.4 gir1.2-webkit2-4.0 gjs glib-networking glib-networking-services gnome-calendar gnome-control-center gnome-control-center-data gnome-initial-setup gnome-power-manager gnome-session-bin gnome-session-common gnome-settings-daemon gnome-shell gnome-shell-common gnome-shell-extension-appindicator gnome-shell-extension-ubuntu-dock gnome-software gnome-software-common gnome-software-plugin-snap gnome-startup-applications gsettings-desktop-schemas gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio gstreamer1.0-x gtk-update-icon-cache gvfs gvfs-backends gvfs-bin gvfs-common gvfs-daemons gvfs-fuse gvfs-libs hplip hplip-data ibus ibus-gtk ibus-gtk3 libalgorithm-diff-xs-perl libappstream-glib8 libappstream4 libboost-atomic-dev libboost-chrono-dev libboost-container-dev libboost-context-dev libboost-coroutine-dev libboost-date-time-dev libboost-dev libboost-exception-dev libboost-fiber-dev libboost-filesystem-dev libboost-graph-dev libboost-graph-parallel-dev libboost-iostreams-dev libboost-locale-dev libboost-log-dev libboost-math-dev libboost-mpi-dev libboost-mpi-python-dev libboost-numpy-dev libboost-program-options-dev libboost-python-dev libboost-random-dev libboost-regex-dev libboost-serialization-dev libboost-stacktrace-dev libboost-system-dev libboost-test-dev libboost-thread-dev libboost-timer-dev libboost-tools-dev libboost-type-erasure-dev libboost-wave-dev libcairo-gobject-perl libcairo-perl libcups2 libcupsimage2 libcurl3-gnutls libcurl4 libcurl4-openssl-dev libdazzle-1.0-0 libebackend-1.2-10 libegl-mesa0 libfcgi-perl libfile-fcntllock-perl libfwupd2 libgail-3-0 libgail-common libgail18 libgazebo9 libgazebo9-dev libgbm1 libgcab-1.0-0 libgdal-dev libgirepository-1.0-1 libgjs0g libgl1-mesa-dri libglapi-mesa libglib-object-introspection-perl libglib-perl libglib2.0-0 libglib2.0-bin libglib2.0-dev libglib2.0-dev-bin libglibmm-2.4-1v5 libglx-mesa0 libgs9 libgs9-common libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgtk-3-0 libgtk-3-bin libgtk2.0-0 libgtk2.0-bin libgtk2.0-dev libgtkmm-3.0-1v5 libhdf5-dev libhdf5-openmpi-dev libhpmud0 libhtml-parser-perl libhttp-date-perl libhttp-message-perl libibus-1.0-5 libignition-common libignition-common-dev libio-socket-ssl-perl libjavascriptcoregtk-4.0-18 liblocale-gettext-perl libnautilus-extension1a libnet-dbus-perl libnet-libidn-perl libnet-ssleay-perl libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libopencv-calib3d-dev libopencv-contrib-dev libopencv-core-dev libopencv-dev libopencv-features2d-dev libopencv-flann-dev libopencv-highgui-dev libopencv-imgcodecs-dev libopencv-imgproc-dev libopencv-ml-dev libopencv-objdetect-dev libopencv-photo-dev libopencv-shape-dev libopencv-stitching-dev libopencv-superres-dev libopencv-ts-dev libopencv-video-dev libopencv-videoio-dev libopencv-videostab-dev libopencv-viz-dev libpango-1.0-0 libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangomm-1.4-1v5 libpangoxft-1.0-0 libpcl-dev libpolkit-agent-1-0 libpolkit-gobject-1-0 libpython3-dev libpython3-stdlib libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickparticles5 libqt5quicktest5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5webkit5-dev libqt5widgets5 libqt5xml5 libqtpropertybrowser4 libqwt-headers libqwt-qt5-6 libqwt-qt5-dev libreoffice-avmedia-backend-gstreamer libreoffice-base-core libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw libreoffice-gnome libreoffice-gtk3 libreoffice-help-en-us libreoffice-help-zh-cn libreoffice-impress libreoffice-l10n-zh-cn libreoffice-math libreoffice-ogltrans libreoffice-style-breeze libreoffice-style-galaxy libreoffice-style-tango libreoffice-writer librhythmbox-core10 libsane-common libsane-hpaio libsane1 libsimbody-dev libsmbclient libsocket6-perl libsoup-gnome2.4-1 libsoup2.4-1 libssh-4 libsub-name-perl libtext-charwidth-perl libtext-iconv-perl libtinyxml2-dev libvtk6-dev libvtk6-qt-dev libvtk6.3 libvtk6.3-qt libwbclient0 libwebkit2gtk-4.0-37 libwww-perl libxml-libxml-perl libxml-parser-perl mutter nautilus nautilus-data orca pavucontrol perl perl-base policykit-1 printer-driver-brlaser printer-driver-gutenprint printer-driver-hpcups printer-driver-postscript-hp pyqt5-dev python-asn1crypto python-attr python-automat python-backports.functools-lru-cache python-cairo python-cffi-backend python-chardet python-concurrent.futures python-constantly python-cryptography python-dateutil python-docutils python-enum34 python-hyperlink python-idna python-ipaddress python-netifaces python-nose python-numpy python-olefile python-opengl python-openssl python-pam python-pil python-pkg-resources python-psutil python-pyasn1 python-pyasn1-modules python-pycryptodome python-pygments python-pyparsing python-roman python-service-identity python-setuptools python-sip python-sip-dev python-six python-subprocess32 python-tk python-tz python-u-msgpack python-wxgtk3.0 python-wxtools python-wxversion python-yaml python-zope.interface python3 python3-apt python3-brlapi python3-cairo python3-cffi-backend python3-crypto python3-cups python3-dbus python3-dev python3-distutils python3-gdbm python3-gi python3-gi-cairo python3-lib2to3 python3-markupsafe python3-minimal python3-netifaces python3-pil python3-protobuf python3-renderpm python3-reportlab python3-reportlab-accel python3-simplejson python3-systemd python3-uno python3-yaml qt5-assistant qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qt5-qmltooling-plugins qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev qttools5-dev qttools5-dev-tools qttools5-private-dev remmina remmina-common remmina-plugin-rdp remmina-plugin-secret remmina-plugin-vnc rhythmbox rhythmbox-plugins samba-libs sane-utils simple-scan sip-dev ubuntu-desktop ubuntu-session ubuntu-software unattended-upgrades ure xdg-desktop-portal xdg-desktop-portal-gtk 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 393 个软件包未被升级。
06-18
使用Qt6和QML加载地图可以有多种方式,不同地图服务的加载方法各有特点。 ### 加载Open Street Map 可以利用Qt Location Open Street Map Plugin ,它是QML中的一个地图插件,还支持离线地图加载。可先使用`QuickWidget`加载QML文件来实现基本的地图展示,后续若要实现通过鼠标点击获取点击位置经纬度等功能也较为方便。不过引用中未给出Qt6下的具体代码,在实际使用时,可参考Qt6的官方文档来正确配置和使用该插件 [^1]。 ### 加载高德地图 在之前的实现中,使用Qt Quick和QML实现高德地图时,在初始化过程创建地图对象,设置地图类型、缩放级别和中心点等基本属性,然后将地图对象添加到父项中。在Qt6中,创建新的QML文件(如`main.qml`),示例代码如下: ```qml import QtQuick 2.15 import QtLocation 5.15 // 可能需要根据Qt6适配调整版本 Rectangle { width: 800 height: 600 Map { id: map anchors.fill: parent plugin: Plugin { name: "amap" property string apiKey: "YOUR_API_KEY" // 在此处输入您的高德地图API密钥 } center { latitude: 30.0 longitude: 120.0 } zoomLevel: 10 } } ``` 此代码仅为示例,在Qt6中使用时可能需要根据官方文档调整`import`的版本以及插件的使用方式 [^2][^5]。 ### 加载百度地图 可参考使用Qt Quick集成Html百度地图的示例,不过引用中示例基于Qt 5.15.2(Windows)和Qt 5.12(Android) 。在Qt6中,要考虑版本兼容性问题,确保自行配置百度地图API及相应的权限。示例代码在Qt6中可能需要根据实际情况调整。基本步骤为克隆或下载示例仓到本地,在Qt Creator中打开项目文件,根据平台配置相应的环境,编译并运行示例程序 [^3]。 ### 加载3D地图 若要加载3D地图,之前的版本在4.3版本增加了动态轨迹线、三个地图(海图/天地图街道/天地图卫星)等功能。在Qt6中使用时,可参考之前的实现思路,结合Qt6的新特性和官方文档来更新和完善代码,实现3D模拟等功能 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHT0506

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值