資源簡(jiǎn)介
實(shí)現(xiàn)注冊(cè)登錄,傳文件,程序與測(cè)試過(guò)可以完美運(yùn)行,適合新手當(dāng)作練習(xí)小項(xiàng)目。

代碼片段和文件信息
#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?????{
????????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“); //填寫(xiě)文件大小欄
????ui->le_recvsize->setText(tr(“%1“).arg(myRcvedBytes?/?(1024?*?1024))?+?“?MB“); //填寫(xiě)已接收欄
????ui->rateLabel->setText(tr(“%1“).arg(transpeed?*?1000?/?(1024?*?1024)?0?‘f‘?2)?+?“?MB/秒“); //計(jì)算并顯示傳輸速率
????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();
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????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
評(píng)論
共有 條評(píng)論