在通过QT实现FTP传输的项目开发中,需要使用FTP协议进行文件传输。 QNetworkAccessManager支持现有QT附带的库中的FTP传输。 虽然可以实现这些FTP的上传/下载功能,但有些功能是QNetworkAccessManager未提供的。 例如list、cd在这种情况下,不得不使用QFtp,下载源代码自己编译就可以使用了。
QTP的使用从http://www.Sina.com/github下载QFtp :
https://github.com/qt/qtftp
完成后,您将看到qtftp包含源代码和示例。
下载的源代码
以下,以MSVC为例。
打开src/qftp/qftp.pro时,将显示缺省配置。
config=静态
config-=共享
更改:
config=静态库
CONFIG =shared
由此,在生成*.dll的同时也生成. lib。
编译QFtp并在完成后,在lib文件夹下生成. lib、 dll和. prl文件。
将Qt5Ftpd.lib、Qt5Ftp.lib、Qt5Ftpd.prl和Qt5Ftp.prl复制到d 3360QtQt5.5.1 5.5msvc 2013 lib。
将Qt5Ftpd.dll、Qt5Ftp.dll复制到d :QtQt5.5.1 5.5msvc 2013bin。
将QFtp.h、qurlinfo.h复制到d :QtQt 5.5.15.5msvc 2013includeQt network中,将名为qftp的文件(不带扩展名)复制到
完成后,可以使用QFtp。
的添加以QFtp异步方式工作,因此没有块函数。 如果动作不能立即执行,函数会立即返回,并将动作调度为稍后执行。 计划操作的结果将以信号形式报告。 此方法依赖于事件循环操作。 可以调度的操作(也称为“命令”)包括connectToHost (,login )、close )、list )、cd )、get )、put )、remove )、mkdir )
所有这些命令都可以返回唯一的标识符,并跟踪当前正在运行的命令。 命令开始执行时,会发出带有命令标识符的commandStarted ()信号。 命令完成后,将发出commandFinished () ()信号,带有命令标识符和bool参数,指示命令完成时是否出现错误。
3 .使用示例
将QFtp库添加到pro :
config (调试,调试) {
LIBS =-lQt5Ftpd
} else {
LIBS =-lQt5Ftp
}例如,如果要连接并登录到FTP服务器,这是一个简单的实现。
#包含
qftpFTP=newqftp(parent );
FTP-connecttohost (' 192.168.* *.* * ',21 ); //主机: 192.168.***.***端口号: 21
FTP-login(「test”、“123456”//用户名: test密码: 123456
首先,使用connectToHost (使用连接到FTP服务器,login )登录到FTP服务器。 登录成功后,可以计划其他操作(list ()、CD (get )、put (remove )、mkdir (rmdir )、rename (重命名)、rawCommand (原始命令) )
QT发布方式改进的探讨首先:
如上图所示,将开源QT库添加到开发环境中需要:个步骤
获取开源库的源代码
构成编译开源库的编译环境
生成dll和lib文件
配置自定义工程编译环境
添加编译开放源代码库生成的头文件、dll和lib文件
定制工程编译
要通过这种方式添加第三方开源QT库,由于环境配置复杂,可移植性和兼容性差,在创建新的开发环境并调用开源库时,必须重复这些步骤才能正常使用
的发行步骤如下。 (图1 ) :
静态编译库中一般不包含,因为是第三方库,所以可以使用相关指令(windeployqt指令)获取相关文件,然后成功打包发布,过程不智能
改善后的步骤(图2 ) :
获取第三方开源库的源代码,将该库的源代码添加到定制QT项目的. pro文件中,并在pri路径中包括源代码中的头文件,然后将其添加到该库中。 您也可以直接使用QT的静态编译器来编译和公开这种方法。 只要开源库包含. pri文件,它就应用于所有QT工程源代码库。 在定制QT项目中,只需添加pri文件和库源代码,即可消除第三方库编译的复杂配置