• 大小: 980KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: QT  

资源简介

实现注册登录,传文件,程序与测试过可以完美运行,适合新手当作练习小项目。

资源截图

代码片段和文件信息

#include “filecntdlg.h“
#include “ui_filecntdlg.h“

FileCntDlg::FileCntDlg(QWidget *parent) :
    QDialog(parent)
    ui(new Ui::FileCntDlg)
{
    ui->setupUi(this);
    myCntSocket = new QTcpSocket(this);
    mySrvPort = 5555;
    connect(myCntSocket SIGNAL(readyRead()) this SLOT(readChatMsg()));
    myFileNameSize = 0;
    myTotalBytes = 0;
    myRcvedBytes = 0;
}

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

void FileCntDlg::createConnToSrv()
{
    myBlockSize = 0;
    myCntSocket->abort();
    myCntSocket->connectToHost(mySrvAddr mySrvPort);
    mytime.start();
}

void FileCntDlg::readChatMsg()
{
    QDataStream in(myCntSocket);
    in.setVersion(QDataStream::Qt_5_14);
    float usedTime = mytime.elapsed();
    if (myRcvedBytes <= sizeof(qint64)*2)
    {
        if((myCntSocket->bytesAvailable() >= sizeof(qint64)*2) && (myFileNameSize == 0))
        {
            in >> myTotalBytes >> myFileNameSize;
            myRcvedBytes += sizeof(qint64)*2;
        }
        if((myCntSocket->bytesAvailable() >= myFileNameSize) && (myFileNameSize != 0))
        {
            in >> myFileName;
            myRcvedBytes += myFileNameSize;
            myLocPathFile->open(QFile::WriteOnly);
            ui->le_rfilename->setText(myFileName);
        } else {
            return;
        }
    }
    if(myRcvedBytes < myTotalBytes)
    {
        myRcvedBytes += myCntSocket->bytesAvailable();
        myInputBlock = myCntSocket->readAll();
        myLocPathFile->write(myInputBlock);
        myInputBlock.resize(0);
    }
    ui->recvProgressBar->setMaximum(myTotalBytes);
    ui->recvProgressBar->setValue(myRcvedBytes);
    double transpeed = myRcvedBytes / usedTime;     //此为毫秒速度
    ui->le_rsizefile->setText(tr(“%1“).arg(myTotalBytes / (1024 * 1024)) + “ MB“); //填写文件大小栏
    ui->le_recvsize->setText(tr(“%1“).arg(myRcvedBytes / (1024 * 1024)) + “ MB“); //填写已接收栏
    ui->rateLabel->setText(tr(“%1“).arg(transpeed * 1000 / (1024 * 1024) 0 ‘f‘ 2) + “ MB/秒“); //计算并显示传输速率
    if(myRcvedBytes == myTotalBytes)
    {
        myLocPathFile->close();
        myCntSocket->close();
        ui->rateLabel->setText(“接收完毕!“);
    }
}

void FileCntDlg::getLocPath(QString lpath)
{
    myLocPathFile=new QFile(lpath);
}

void FileCntDlg::getSrvAddr(QHostAddress saddr)
{
    mySrvAddr=saddr;
    createConnToSrv();
}
void FileCntDlg::on_btn_cntclose_clicked()
{
    myCntSocket->abort();
    myLocPathFile->close();
    close();
}

void FileCntDlg::closeEvent(QCloseEvent *)
{
    on_btn_cntclose_clicked();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2700  2020-02-27 10:25  filecntdlg.cpp
     文件        1388  2020-02-22 17:19  filecntdlg.h
     文件        4134  2020-02-24 23:15  filecntdlg.ui
     文件        3587  2020-03-19 10:42  filesrvdlg.cpp
     文件        1581  2020-02-23 09:49  filesrvdlg.h
     文件        3875  2020-02-24 23:15  filesrvdlg.ui
     目录           0  2020-02-21 14:08  images\
     文件       22584  2020-02-21 14:05  images\tubiao.jpg
     文件     3931136  2018-08-28 23:52  libmysql.dll
     文件       24322  2018-08-28 23:52  libmysql.lib
     文件        1850  2020-02-24 21:46  logindialog.cpp
     文件         617  2020-02-24 16:31  logindialog.h
     文件        2825  2020-02-24 16:51  logindialog.ui
     文件         438  2020-02-24 17:22  main.cpp
     文件        6301  2020-03-05 16:45  mainwindow.cpp
     文件        1860  2020-02-27 10:25  mainwindow.h
     文件        4731  2020-02-24 23:02  mainwindow.ui
     文件         101  2020-02-21 14:08  picture.qrc
     文件      178544  2020-01-24 01:00  qsqlpsql.dll
     文件        1626  2020-02-24 16:31  regiestdialog.cpp
     文件         421  2020-02-21 17:21  regiestdialog.h
     文件        1953  2020-02-24 16:51  regiestdialog.ui
     文件        1387  2020-02-24 16:57  WeChat.pro
     文件       60340  2020-03-19 14:53  WeChat.pro.user

评论

共有 条评论