• 多线程网络文件传输


    多线程网络文件传输

    效果

    【】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);

    }

    }

    }

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

    【】

     

  • 相关阅读:
    LR回放webservice脚本报错------------mmdrv.exe应用程序错误(未解决)
    转载:shell中#*,##*,#*,##*,% *,%% *的含义及用法
    转载:Linux命令经典面试题:统计文件中出现次数最多的前10个单词
    Python---求100以内的质数
    用shell编写小九九乘法表程序
    python中遇到的问题:IndentationError: unexpected indent
    关于redis的持久化策略
    关于equals和hashcode问题
    Spring源码窥探之:Spring AOP初步使用
    Spring源码窥探之:@Value
  • 原文地址:https://www.cnblogs.com/tangyuanjie/p/14028262.html
Copyright © 2020-2023  润新知