Qt实现实现FTP的上传和下载的实例代码的上传和下载的实例代码
本篇文章主要介绍了Qt实现FTP的上传和下载的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做
个参考。一起跟随小编过来看看吧
为了方便网络编程,Qt 提供了 Network 模块。该模块包含了许多类,本文介绍了Qt实现FTP的上传和下载,分享给大家
本来想简单抄抄书,随便手写个Ftp客户端的,结果发现教材上的是基于Qt4的QFtp类库,而在Qt5中取消了这一个类库(同时
也取消了QHttp等的类),取而代之的是QNetworkAccessManager 这个类,把这些杂货全都揽下来了,据说是因为之前的两
个类有重复而且效率有问题balabala。于是就百度了一下,发现百度上要么讲的不全,要么就是要去下一个由热心网民重新封
装的QFtp类。显然我并不喜欢无脑复制粘贴,想好好看下Qt官方提供的东西的用法,深入的理解下Qt网络编程,于是就果断
自行google(话说google真好用),加上查看帮助文档,终于把一个简版的Ftp客户端大概框架弄清楚了。
不多说,上源码:
Dialog.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-10-29T23:52:56
#
#-------------------------------------------------
QT += core gui
QT += network #这里要添加这个库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QFtp
TEMPLATE = app
SOURCES += main.cpp
dialog.cpp
HEADERS += dialog.h
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
//注意需要添加的头文件
#include<QDialog>
#include<QPushButton>
#include<QFile>
#include<QNetworkReply>
#include<QLineEdit>
#include<QtNetwork/QNetworkAccessManager>
#include<QtNetwork/QNetworkRequest>
#include<QLabel>
#include<QString>
#include<QGridLayout>
#include<QMessageBox>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
public:
QGridLayout *layout;
QLabel *LbServer,*LbUser,*LbPasswd;
QLineEdit *LeServer,*LeUser,*LePasswd;
QPushButton *PbPut,*PbGet;
QNetworkAccessManager manager;//这个是重点
protected slots:
//处理按钮的点击信号
void slotPut();
void slotGet();
//处理网络连接的信号
void managePut(QNetworkReply*);
void manageGet(QNetworkReply*);
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
setWindowTitle("My Ftp");
layout=new QGridLayout(this);