QT5中如何使用QFtp类(添加ftp模块)
但是,从 Qt5.x 之后,Qt Network 发生了很大的变化,助手中关于此部分描述如下:
The QFtp and QUrlInfo classes are no longer exported. Use QNetworkAccessManager instead. Programs that require raw FTP or HTTP streams can use the Qt FTP and Qt HTTP compatibility add-on modules that provide the QFtp and QHttp classes as they existed in Qt 4.
意思是说:不再导出 QFtp 和 QUrlInfo 类,改用 QNetworkAccessManager。
使用 QNetworkAccessManager 可以实现 Ftp 的上传/下载功能(参考:Qt之FTP上传/下载),但有些原本 QFtp 有的功能 QNetworkAccessManager 却没有提供,例如:list、cd、remove、mkdir、rmdir、rename 等。这种情况下,就不得不使用 QFtp,值得庆幸的是 QFtp 一直在维护,只需要下载源码自行编译即可使用。
1.下载QFtp源码
从 GitHub 下载 QFtp:
或者使用命令下载 :
git clone https://github.com/qtproject/qtftp
2. 编译
如图用QTCreator打开项目,编译。
4.编译动态库,静态库
修改qtftp\src\qftp\ftp.pro文件
将原来的两句CONFIG修改为:
CONFIG += static
CONFIG += shared
然后编译编译完成后会在构建目录\lib\目录下生给予成我们需要的动态库静态库文件。
5.部署编译好的库
5.1将动态库(.dll文件)拷贝至Qt5.9.8\5.9.8\mingw53_32\bin目录下
5.2将静态库(.a文件)及.prl文件 拷贝至Qt5.9.8\5.9.8\mingw53_32\lib目录下
5.3将构建目录下/include/ 目录下的 QtFtp文件夹拷贝至Qt5.9.8\5.9.8\mingw53_32\include目录下
5.4将\qtftp\src\qftp目录下的两个头文件qftp.h和qurlinfo.h
拷贝至Qt5.9.8\5.9.8\mingw53_32\include\QtFtp 目录下
5.4.1在该目录下创建一个文件QFtp注意没有扩展名
5.4.2用记事本打开QFtp文件,并且在其中写上#include”qftp.h”
5.5 将构建目录下文件 \mkspecs\modules-inst\qt_lib_ftp.pri 拷贝至Qt5.9.8\5.9.8\mingw53_32\mkspecs\modules目录
6.使用编译好的库,在项目的 .pro文件添加
QT += ftp
#LIBS+="D:/.../Qt5.9.8/5.9.8/mingw53_32/bin/Qt5Ftp.dll"