天天看點

Qt5.9使用Qt4的QFTP全過程

文章目錄

  • ​​1、簡介​​
  • ​​2、下載下傳并編譯Qt4的庫​​
  • ​​2.1 編譯準備​​
  • ​​2.1.1 修改“qtftp-master\src\qftp”下的“qftp.pro”檔案​​
  • ​​2.1.2 修改“qtftp-master\src\qftp”下的“qftp.h”檔案​​
  • ​​2.2 編譯​​
  • ​​3、應用編譯好的庫​​
  • ​​3.1 引用​​
  • ​​3.1.1 拷貝靜态庫到 lib 下​​
  • ​​3.1.2 拷貝動态庫到 bin 下​​
  • ​​3.1.3 拷貝頭檔案到 QtNetwork 下​​
  • ​​3.2 引用​​

1、簡介

好久沒碰Qt了,今天突然有一個好朋友來問了我一個QFTP的問題,正好這個問題以前沒搞過,是以研究一下。因為QFTP是Qt4的庫,Qt5已經不用了,改用了QNetworkAccessManager來代替。但是Qt5提供的QNetworkAccessManager僅支援FTP的上傳和下載下傳,是以隻能用QFTP了。今天搞完,有些小收獲,記錄一下。

2、下載下傳并編譯Qt4的庫

QFTP在Github的下載下傳位址:​​https://github.com/qt/qtftp​​

先下載下傳到本地,然後把它編譯。注意編譯前要改兩個地方:

2.1 編譯準備

2.1.1 修改“qtftp-master\src\qftp”下的“qftp.pro”檔案

把“CONFIG += static CONFIG -= shared”改為“CONFIG += staticlib CONFIG += shared”,如下:

#CONFIG += static
#CONFIG -= shared
TEMPLATE = lib      

2.1.2 修改“qtftp-master\src\qftp”下的“qftp.h”檔案

//#include <QtFtp/qurlinfo.h>
#include <qurlinfo.h>      

2.2 編譯

編譯好後,會在編譯好的檔案夾的“lib”目錄找到如下檔案:

Qt5.9使用Qt4的QFTP全過程

3、應用編譯好的庫

應用編譯好的庫有兩種方式,一種是直接引用頭檔案,并在應用到ftp項目的目錄加入lib和dll,在pro用添加引用庫的參數。另一種則是放在Qt的目錄下,以後所有項目都可以直接用這個庫。本文講的是後者。

3.1 引用

3.1.1 拷貝靜态庫到 lib 下

接下來将 Qt5Ftpd.lib、Qt5Ftp.lib、Qt5Ftpd.prl、Qt5Ftp.prl 拷貝至 Qt\Qt5.9\5.9\msvc2015\lib。

Qt5.9使用Qt4的QFTP全過程

3.1.2 拷貝動态庫到 bin 下

将 Qt5Ftpd.dll、Qt5Ftp.dll 拷貝至 Qt\Qt5.9\5.9\msvc2015\bin

Qt5.9使用Qt4的QFTP全過程

3.1.3 拷貝頭檔案到 QtNetwork 下

将src\qftp目錄下的 qftp.h、qurlinfo.h 拷貝至 Qt\Qt5.9.0\5.9\msvc2015\include\QtNetwork,并建立一個名為 QFtp 的檔案(注意:沒有字尾名),然後用文本編輯器寫入 #include “qftp.h”。

Qt5.9使用Qt4的QFTP全過程
Qt5.9使用Qt4的QFTP全過程
Qt5.9使用Qt4的QFTP全過程

編譯好的檔案我已經上傳

3.2 引用

完成之後,就到了引用環節了,記得我們是在msvc2015下引用的庫,編譯器就得選擇msvc2015的哦。然後我們在上述過程中的QtNetwork 下加的引用庫,就得引用network架構哈。在項目的.pro檔案中加入以下内容,就可以引用了:

QT  += network
CONFIG(debug, debug|release) {
    LIBS += -lQt5Ftpd
} else {
    LIBS += -lQt5Ftp
}