当前位置: 首页 > wzjs >正文

网站开发维护协议yy直播

网站开发维护协议,yy直播,我国政府网站建设与管理现状,手机可做兼职的网站Qt实现文件传输客户端 1、 客户端UI界面设计2、客户端2.1 添加网络模块和头文件2.2 创建Tcp对象2.3 连接按钮2.3.1 连接按钮连接信号与槽2.3.2 连接按钮实现 2.4 读取文件2.4.1 连接读取文件的信号与槽2.4.2 读取文件槽函数实现2.5 进度条2.5.1 设置进度条初始值2.5.2 初始化进…

Qt实现文件传输客户端

  • 1、 客户端UI界面设计
  • 2、客户端
  • 2.1 添加网络模块和头文件
  • 2.2 创建Tcp对象
  • 2.3 连接按钮
    • 2.3.1 连接按钮连接信号与槽
    • 2.3.2 连接按钮实现
  • 2.4 读取文件
  • 2.4.1 连接读取文件的信号与槽
  • 2.4.2 读取文件槽函数实现
  • 2.5 进度条
    • 2.5.1 设置进度条初始值
    • 2.5.2 初始化进度条
    • 2.5.3 更新进度条
  • 2.6 传输成功
  • 3、 头文件和.cpp文件
    • 3.1 头文件
    • 3.2 .cpp文件
  • 4、 仓库地址
  • 5、总结

记录自己对于Qt实现文件传输客户端的学习过程,方便自己日后回顾,也可以给别人提供参考借鉴。服务器端在主页另外一篇博客

1、 客户端UI界面设计

在这里插入图片描述

2、客户端

2.1 添加网络模块和头文件

在这里插入图片描述
在这里插入图片描述

2.2 创建Tcp对象

private:Ui::Widget *ui;QTcpSocket *tcpSocket;          //声明Tcp对象指针

在这里插入图片描述

tcpSocket = new QTcpSocket(this);       //创建客户端Tcp对象

在这里插入图片描述

2.3 连接按钮

2.3.1 连接按钮连接信号与槽

右键连接按钮,选择转到槽

在这里插入图片描述

选择clicked()

在这里插入图片描述

2.3.2 连接按钮实现

//连接按钮
void Widget::on_connectPushButton_clicked()
{QString ip = ui->ipLineEdit->text();      //获取ipquint16 port = ui->portLineEdit->text().toUInt();       //获取端口tcpSocket->connectToHost(ip,port);          //连接服务器
}

2.4 读取文件

2.4.1 连接读取文件的信号与槽

创建槽函数
void readFileHandle();                      //读取文件处理           

在这里插入图片描述

连接信号与槽
connect(tcpSocket,&QTcpSocket::readyRead,this,&Widget::readFileHandle);     //连接读取文件的信号与槽

在这里插入图片描述

2.4.2 读取文件槽函数实现

定义一个文件发送成功状态
bool isFileMes;        //文件读取信息

在这里插入图片描述

isFileMes = true;      //读取的是文件信息

在这里插入图片描述

创建文件所需对象,记得添加头文件
QFile file;                     //创建文件对象QString fileName;               //文件名字
qint64 fileSize;                //文件大小
qint64 recFileSize;           //接收文件大小

在这里插入图片描述

实现槽函数
//读取文件
void Widget::readFileHandle()
{QByteArray message = tcpSocket->readAll();          //接收信息if(isFileMes==true)//发送过来的是文件信息{//1、接收文件信息并拆包//hello##1024 拆包fileName = QString(message).section("##",0,0);        //获取文件名,hellofileSize = QString(message).section("##",1,1).toInt();        //获取文件大小,1024//2、创建文件设置为只写file.setFileName(fileName);       //创建文件bool isOpen = file.open(QIODevice::WriteOnly);if(isOpen == false){QMessageBox::warning(this,"打开文件","文件打开失败");tcpSocket->disconnectFromHost();        //断开连接tcpSocket->close();             //关闭}}else        //接收的是文件内容{qint64 length = file.write(message);recFileSize += length;if(recFileSize == fileSize){QMessageBox::information(this,"接收文件","接收文件完毕");}}
}

2.5 进度条

2.5.1 设置进度条初始值

ui->sendprogressBar->setValue(0);          //设置进度条初始值

2.5.2 初始化进度条

//初始化进度条
//初始化进度条
ui->sendprogressBar->setMaximum(100);     //设置进度条最大值,qint64->int
ui->sendprogressBar->setValue(0);               //设置当前值

2.5.3 更新进度条

//更新进度条
int progress = static_cast<int>((recFileSize * 100) / fileSize);
ui->sendprogressBar->setValue(progress);   

2.6 传输成功

在这里插入图片描述

3、 头文件和.cpp文件

3.1 头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpSocket>
#include <QFile>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_connectPushButton_clicked();          //连接按钮void readFileHandle();                      //读取文件处理private:Ui::Widget *ui;QTcpSocket *tcpSocket;          //声明Tcp对象指针bool isFileMes;        //文件读取信息QFile file;                     //创建文件对象QString fileName;               //文件名字qint64 fileSize;                //文件大小qint64 recFileSize;           //接收文件大小};
#endif // WIDGET_H

3.2 .cpp文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//    this->setWindowFlag(Qt::FramelessWindowHint);       //去窗口this->setAttribute(Qt::WA_TranslucentBackground);   //半透明背景tcpSocket = new QTcpSocket(this);       //创建客户端Tcp对象isFileMes = true;      //读取的是文件信息ui->sendprogressBar->setValue(0);          //设置进度条初始值connect(tcpSocket,&QTcpSocket::readyRead,this,&Widget::readFileHandle);     //连接读取文件的信号与槽
}Widget::~Widget()
{delete ui;
}//连接按钮
void Widget::on_connectPushButton_clicked()
{QString ip = ui->ipLineEdit->text();      //获取ipquint16 port = ui->portLineEdit->text().toUInt();       //获取端口tcpSocket->connectToHost(ip,port);          //连接服务器
}//读取文件
void Widget::readFileHandle()
{QByteArray message = tcpSocket->readAll();          //接收信息if(isFileMes==true)//发送过来的是文件信息{//1、接收文件信息并拆包//hello##1024 拆包QString masgStr = QString::fromUtf8(message);fileName = masgStr.section("##",0,0);        //获取文件名,hellofileSize = masgStr.section("##",1,1).toLongLong();        //获取文件大小,1024//2、创建文件设置为只写file.setFileName(fileName);       //创建文件bool isOpen = file.open(QIODevice::WriteOnly);if(isOpen == false){QMessageBox::warning(this,"打开文件","文件打开失败");tcpSocket->disconnectFromHost();        //断开连接tcpSocket->close();             //关闭}//初始化进度条ui->sendprogressBar->setMaximum(100);     //设置进度条最大值,qint64->intui->sendprogressBar->setValue(0);               //设置当前值recFileSize = 0; // 重置接收文件大小isFileMes = false;      //转换标志}else        //接收的是文件内容{qint64 writelength = file.write(message);if(writelength != message.size()){QMessageBox::warning(this, "错误", "文件写入失败");file.close();tcpSocket->disconnectFromHost();return;}recFileSize += writelength;//更新进度条int progress = static_cast<int>((recFileSize * 100) / fileSize);ui->sendprogressBar->setValue(progress);   if(recFileSize == fileSize){QMessageBox::information(this, "成功", "文件接收完成");file.close();isFileMes = true; // 重置标志位,准备接收下一个文件tcpSocket->disconnectFromHost(); // 断开连接或保持连接根据需求}}
}

4、 仓库地址

代码仓库地址

5、总结

以上就是实现Qt实现文件传输客户端的整个过程了,服务端在另外一篇博客,浏览过程中,如若发现错误,欢迎

大家指正,有问题的可以评论区留言或者私信。最后,如果大家觉得有所帮助,可以点一下赞,谢谢大家!世界

扑朔迷离,愿我们保持冷静,继续前行!
http://www.dtcms.com/wzjs/307390.html

相关文章:

  • 网站开发建设合同抚州seo外包
  • 网站建设优化服务资讯百度关键词规划师
  • 对营销网站建设评估及分析广州seo网络培训课程
  • 个人网站的服务器环境安装山东大学经济研究院
  • wordpress自动分享插件下载地址优化网站有哪些方法
  • 17zwd一起做网店潮汕站app营销推广方案
  • 设计公司网站首页显示网络营销学什么内容
  • 旅游攻略那个网站做的好查询网138网站域名
  • 广州番禺网站制作推广alexa
  • 建设银行网站注销整站排名优化公司
  • 青提wifi小程序开发教程厦门seo百度快照优化
  • 什么网站不用备案北京aso优化
  • 手机微信官方网站首页百度产品推广怎么收费
  • 南宁网站设计公司排名百度推广开户渠道公司
  • 能免费做封面的网站编程培训机构排名前十
  • enfold wordpress北京网站优化步
  • 自己做网站要会什么软件上海哪家seo公司好
  • 网站备案报道优化网站结构一般包括
  • 小米发布会官网兰州seo实战优化
  • 电子商务网站需要做那些准备工作成都seo专家
  • 中音阶梯网站谁家建设网络优化工程师有前途吗
  • 业之峰装饰全包靠谱吗百度seo推广免费
  • 制作个人网页的过程长沙网站优化培训
  • 淮安建设局网站saas建站平台
  • wordpress通过文章id获取文章资源优化网站排名
  • 电子商务的门户网站站长是什么职位
  • 清远建网站的公司百度明星人气榜入口
  • 网站开发客户阿里云案例某网站seo策划方案
  • 装饰公司网站如何布局2023年8月新冠疫情
  • 新手学做网站 iso ed2k全网营销渠道