QT学习(网络通讯:FTP)

QT学习(网络)

FTP

FTP的主要作用,就是让用户连接上一个远程计算机,查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝到本地计算机,或者把本地计算机的文件送到远程计算机上。

注意:
我使用的是QT5.11.2,里面没有FTP的相关头文件,所以使用前记得根据以下链接配置!!!
链接: Qt5使用QFtp类库的操作过程.

进入代码:
***.pro

QT       += core gui network

CONFIG(debug,debug|release){
    LIBS += -lQt5Ftpd
}else{
    LIBS += -lQt5Ftp
}
#这是我的qt地址
LIBS += -LD:/qt/QT/5.11.2/msvc2015_64/lib

界面:
在这里插入图片描述
***.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFtp>
#include <QLabel>
#include <QtGui>
#include <QTreeWidgetItem>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_downloadButton_clicked();
    void on_cdToParentButton_clicked();
    void on_connectButton_clicked();
    void ftpCommandStarted(int);
    void ftpCommandFinished(int,bool);
    void updateDataTransferProgress(qint64,qint64 );//更新进度条
    //将服务器上的文件添加到Tree Widget中
    void addToList(const QUrlInfo &urlInfo);
    void processItem(QTreeWidgetItem*,int);//双击一个目录时显示其内容

private:
    Ui::Widget *ui;
    QHash<QString, bool> isDirectory; //用来存储一个路径是否为目录的信息
    QString currentPath; //用来存储现在的路径
    QFile *file;
    QFtp *ftp;
};

#endif // WIDGET_H

***.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
    ui->setupUi(this);

    ui->progressBar->setValue(0);
    //鼠标双击列表中的目录时,我们进入该目录
    connect(ui->fileList,SIGNAL(itemActivated(QTreeWidgetItem*,int)),
            this,SLOT(processItem(QTreeWidgetItem*,int)));
}

Widget::~Widget()
{
   
    delete ui;
}

/*****************************************************************************
    我们在“连接”按钮的单击事件槽函数中新建了ftp对象,然后关联了相关的信号和槽。
    这里的listInfo()信号由ftp->list()函数发射,它将在登录命令完成时调用,
    下面我们提到。而dataTransferProgress()信号在数据传输时自动发射。
    最后我们从界面上获得服务器地址,用户名和密码等信息,并以它们为参数执行连接和登录命令。
****************************************************************************/
void Widget::on_connectButton_clicked()   //连接按钮
{
   
    ui->fileList->clear();
    currentPath.clear();
    isDirectory.clear();

    ftp = new QFtp(this);
    connect(ftp,SIGNAL(commandStarted(int)),
            this,SLOT(ftpCommandStarted(int)));
    connect(ftp,SIGNAL(commandFinished(int,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值