源代码
我在代码里面都有非常详细的注释,所以就直接放上代码啦
1 客户端
头文件 mainwindow.h
ifndef MAINWINDOW_H
define MAINWINDOW_H
include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:void startConnect(unsigned short,QString);
// 发送文件信号
void sendFile(QString path);
private slots:void on_connectServer_clicked();
void on_selFile_clicked();
void on_sendFile_clicked();
private:Ui::MainWindow *ui;
};
endif // MAINWINDOW_H
源文件 mainwindow.cpp
include “mainwindow.h”
include “ui_mainwindow.h”
include
include
include “sendfile.h”
include
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
, ui(new Ui::MainWindow)
{ui->setupUi(this);
// 设置IP和端口
ui->ip->setText(“127.0.0.1”);
ui->port->setText(“8989”);
// 设置进度条
ui->progressBar->setRange(0,100);
ui->progressBar->setValue(0);
// 客户端在子线程中连接服务器
// 创建线程对象
QThread* t = new QThread;
// 创建任务对象
SendFile* worker = new SendFile;
// 将worker移动到子线程t中
worker->moveToThread(t);
// 当发送sendFile信号,让worker的sendFile函数处理(子线程)
connect(this,&MainWindow::sendFile,worker,&am