北京通网站建设价格,建立网站需要做什么,搜索推广是什么,wordpress标题换行显示不全前言 因为之前写了一个接收和发送文件的脚本#xff0c;然后又需要获取进度#xff0c;同步到进度条中。 效果#xff1a; 使用正则匹配#xff0c;获取命令行命令中的以下数据#xff0c;然后同步到进度条 源码demo#xff1a;
非完整代码#xff1a;
#include Q…前言 因为之前写了一个接收和发送文件的脚本然后又需要获取进度同步到进度条中。 效果 使用正则匹配获取命令行命令中的以下数据然后同步到进度条 源码demo
非完整代码
#include QRegularExpression
#include QProcessbool transferFile(const QString localFilePath, const QString remoteFilePath, const QString host, const QString username, const QString password)
{ui-sendProgressBar-setValue(0);QRegularExpression re((\\d{1,3})%); // 匹配1到3位数字后面跟着一个百分号QProcess process;QString appPath;if(sendFileShPath.endsWith(/)){appPath sendFileShPath send_file;}else{appPath sendFileShPath /send_file;}QString cmd QString(%6 %1 %2 %3 %4 %5).arg(username).arg(host).arg(password).arg(localFilePath).arg(remoteFilePath).arg(appPath);process.start(cmd);qDebug()QString(%1 send to %2).arg(localFilePath).arg(remoteFilePath);// 当有标准输出可读时读取并输出内容QObject::connect(process, QProcess::readyRead, []() {while (!process.atEnd()) {QByteArray ba process.readLine();QString s QString::fromUtf8(ba).trimmed();QRegularExpressionMatch match re.match(s);if(match.captured(1) ! ){int curNum match.captured(1).toInt();qDebug() curNum %;ui-sendProgressBar-setValue(curNum);}}});if (!process.waitForStarted()) {qDebug() Failed to start process.;return false;}process.waitForFinished();return true;
}
以上代码中的cmd可以自行替换