Qt 拷贝文件并显示进度百分比

1. windows系统,利用cmd命令 copy文件,同时读取进度,显示在界面中

	            QProcess* p = new QProcess;
                QString strSrc = sourceDir.filePath(fileInfo.fileName());
                QString strDst = destinationDir.filePath(fileInfo.fileName()).left(destinationDir.filePath(fileInfo.fileName()).lastIndexOf("/"));

                p->setReadChannel(QProcess::StandardOutput );
                QObject::connect(p, &QProcess::readyReadStandardOutput, this, [&] ()
                {
                    QByteArray byteArr = p->readAll();
                    int nSize = byteArr.size();
                    QString strContent = byteArr;
                    strContent = strContent.fromLocal8Bit(byteArr);
                    QStringList strList = strContent.split("\r", QString::SkipEmptyParts);
                    strList.removeDuplicates();
                    if (!strList.isEmpty())
                        strContent = strList.at(0).left(strList.at(0).indexOf("%") + 1);
                    else
                        strContent = "复制完成";

                    QString strShowText = QString("正在复制文件 ") + fileInfo.fileName();
                    strShowText += "\t\t\t" + strContent;
                    sendCopyFileProgress(strShowText);
                    qDebug() <<"output : " << strContent;
                });

                QString strCommand = QString("/C copy /y /z %1 %2").arg(strSrc.replace("/", "\\")).arg(strDst.replace("/", "\\"));
                p->start("cmd", QStringList() << strCommand);
                p->waitForFinished(-1);
                qDebug()<< "command is : " << strCommand;
                delete p;
                p = NULL;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的应用程序框架,提供了丰富的功能和工具来简化开发过程。在Qt中,我们可以使用QFile类来进行文件拷贝操作。 要进行文件拷贝,我们首先需要创建两个QFile对象,分别表示源文件和目标文件。通过调用源文件的open()函数来打开源文件,并将其设置为只读模式。接着,通过调用目标文件的open()函数来创建或打开目标文件,并将其设置为写入模式。 接下来,我们可以使用QDataStream类来将源文件的数据读取到一个QByteArray对象中。通过QDataStream的readRawData()函数,我们可以将源文件中的数据读取到字节数组中。 然后,我们可以使用QDataStream类的writeRawData()函数,将刚才读取到的字节数组写入目标文件中。通过不断地循环读取和写入操作,直到源文件的数据全部读取完毕为止。 在进行文件拷贝的过程中,我们还可以使用QFile类提供的size()函数获取源文件的大小,并根据已经读取的数据大小计算出拷贝进度。可以使用QProgressDialog类来创建一个进度对话框,以便显示拷贝进度。我们可以在循环读取和写入操作的过程中,更新进度对话框的进度条,并在用户点击取消按钮时停止拷贝操作。 总之,Qt提供了易于使用的类和函数来进行文件拷贝操作,并且我们还可以通过QProgressDialog类来实时显示拷贝进度。这使得文件拷贝操作变得简单而方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值