我有一个名为QStringListfilesToCopy,其中包含要复制的文件名。
我要输出以下内容:



看起来像这样:



这是我的代码:

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

08-19 23:27