我有一个名为QStringList
的filesToCopy
,其中包含要复制的文件名。
我要输出以下内容:
看起来像这样:
这是我的代码:
d->copyProcess = new QProcess(this);
QStringList copyProcessParameters;
Q_FOREACH(QString fileName, fileNames)
{
d->totalFileSize += this->getSize(fileName);
d->filesToCopy.append(fileName);
}
d->filesToCopy.append(")");
d->filesToCopy.prepend("(");
copyProcessParameters.append(d->filesToCopy);
copyProcessParameters.append("do copy %I");
copyProcessParameters.append(destinationDir);
copyProcessParameters.replaceInStrings("/","\\");
qDebug()<<"for %I in" << copyProcessParameters;
d->copyProcess->start("for %I in", copyProcessParameters);
最佳答案
使用QStringList::join()创建以空格分隔的列表。
而且,为简单起见,您可以使用QString::arg()或其重载来创建带有替换的所需字符串。这将比很多prepend()
和/或append()
调用更易于使用和可读。
这是一个例子:
const QString format { R"(for %I in (%1) do copy %I %2)" };
const auto command = format.arg( filesList, destinationDir );