zoukankan      html  css  js  c++  java
  • 多线程网络文件传输

    多线程网络文件传输

    效果

    【】sender

     

     

    void AndySender::on_pbt_selectFile_clicked()

    {

    QFileDialog fileDialog(this);

     

    //设置窗口的标题

    fileDialog.setWindowTitle("选择要发送的文件");

    fileDialog.setNameFilter("所有文件(*.*)"); //设置一个过滤器

    //这个标志用来设置选择的类型,比如默认是单个文件。QFileDialog::ExistingFiles 多个文件,还可以用来选择文件夹QFileDialog::Directory。QFileDialog::ExistingFile 单个文件。注意这个ExistingFile,单词后面多了一个s 表示选择多个文件。要看清楚了。

    fileDialog.setFileMode(QFileDialog::ExistingFiles);

    //弹出对话框

    if (fileDialog.exec() == QDialog::Accepted)

    {

     

    TaskManager *manager =TaskManager::getInstance();

    //strPathList 返回值是一个list,如果是单个文件选择的话,只要取出第一个来就行了。

    QStringList strPathList = fileDialog.selectedFiles();

    foreach(QString path , strPathList)

    {

    qDebug()<<"添加文件上传任务:"<<path;

    AndyProgressBar * progressBar =new AndyProgressBar();

    TaskRunner * runner =new TaskRunner;

    QString hostIp =ui->lineEdit->text();

    if(hostIp=="")

    {

    hostIp ="127.0.0.1";

    }

    runner->setHostIp(hostIp);

    runner->setTask(path,TaskRunner::uploadFile);

    connect(runner,SIGNAL(taskFinish(void*)),runner,SLOT(deleteLater()));

    connect(runner,SIGNAL(UpdatePercent(int)), progressBar,SLOT (on_UpdatePercent(int)));

    connect(runner,SIGNAL(UpdateMaximum(int)), progressBar,SLOT (on_UpdateMaximum(int)));

    connect(runner,SIGNAL(UpdateText(QString)), progressBar,SLOT(on_UpdateText(QString)));

     

    progressBar->SetMaxRange(100);

    progressBar->SetFileName(path.split("/").last());

    ui->vl_content->addWidget(progressBar);

    manager->addTask(runner);

    }

    }

    }

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

  • 相关阅读:
    cef 依赖的文件 libcef
    ubuntu 添加新分区,并挂载/home
    x509 证书链验证
    chromium调试
    Chromium智能指针使用指南
    具有扩展主密钥时SSL/TLS的主密钥计算
    OpenSSL解惑2:如何强制选择协议的版本
    基于Gmssl的SM2加解密算法Demo
    漫谈TLS nonce
    VS2015动态库静态加载时指定动态库位置的方法
  • 原文地址:https://www.cnblogs.com/tangyuanjie/p/14028262.html
Copyright © 2011-2022 走看看