Благодаря @ TomKim ответу за обработку расширенных строк в своем ответе я решил эту проблему. Но к сожалению, пробелы вызвали у меня другие проблемы, которые заставили меня придумать это решение, которое, надеюсь, поможет другим. Хотя это не самое красивое решение, но оно подходит именно мне для нескольких платформ:
void QuickCut::executeProcess(const std::string & szProc, const std::string & szArgs)
{
// QProc won't expand environment variable strings.
// Invoking using the user console will allow for expanded string to work as expected.
#ifdef Q_OS_WIN
QString szCommand = "cmd /c start \"\" \"" + QString::fromStdString(szProc) + "\"";
QString szExt = ".cmd";
#elif Q_OS_UNIX
QString szCommand = "sh -c '" + QString::fromStdString(szProc) + "'";
QString szExt = ".sh";
#endif
QStringList qArgsTmp = QString::fromStdString(szArgs).trimmed().split(",");
for (auto && arg : qArgsTmp)
{
QString argTrimmed = arg.trimmed();
if (argTrimmed.isEmpty()) continue;
szCommand += " " + argTrimmed;
}
qDebug() << "[QuickCut::executeProcess] - Execute Command: " << szCommand;
QString szFilePath = applicationDirPath() + "/tempCmd" + szExt;
QFile file(szFilePath);
file.open(QIODevice::ReadWrite);
QTextStream ts(&file);
ts << szCommand;
file.close();
QProcess::execute(szFilePath);
file.remove();
}