如何使用 QProcess 运行命令行?

Posted

技术标签:

【中文标题】如何使用 QProcess 运行命令行?【英文标题】:How to run command line with QProcess? 【发布时间】:2018-11-30 08:01:59 【问题描述】:

我有一个应用程序 (X)Medcon,我想用QProcess 运行命令行(转换文件)。我试过了,但并不成功。这是我的代码

   convertDicomProcess = new QProcess(this);
   QString program = "C:\\Program Files\\XMedCon\\bin\\xmedcon.exe";
   QStringList arguments;
   arguments << "medcon"<< "-f" << "F:/33.nii" << "-c" << "dicom" << "-o" << "F:/33.dcm";

   convertDicomProcess->start(program, arguments);
   convertDicomProcess->waitForFinished();
   QByteArray output = convertDicomProcess->readAll();
   convertDicomProcess->close();

当我使用

运行命令行时

medcon -f E:\55.nii -c dicom -o E:\55.dcm

转换成功

【问题讨论】:

改成arguments &lt;&lt; "-f" &lt;&lt; "F:\\33.nii" &lt;&lt; "-c" &lt;&lt; "dicom" &lt;&lt; "-o" &lt;&lt; "F:\\33.dcm";` 是的,谢谢,删除 aguments medcon 后它运行良好 【参考方案1】:

试试:

QStringList arguments;
arguments << "/c" << program << "-f" << "F:/33.nii" << "-c" << "dicom" << "-o" << "F:/33.dcm";

convertDicomProcess->start("cmd.exe", arguments);

再次测试您是否真的需要“medcon”作为参数,我不知道,因为我不知道“medcon”程序。如果是,请将其更改为:

arguments << "/c" << program << "medcon" << "-f" << "F:/33.nii" << "-c" << "dicom" << "-o" << "F:/33.dcm";

此代码尝试在 shell 中运行 medcon 程序。

【讨论】:

我删除了 medcon 参数,所以程序运行良好,谢谢 我很高兴它有帮助,请考虑接受/赞成这个答案,以便关闭这个问题,并且有类似问题的潜在其他用户找到解决方案【参考方案2】:

如果您的路径存在,我认为您需要在字符串中使用引号 (\"):

QString program = "\"C:\\Program Files\\XMedCon\\bin\\xmedcon.exe\"";
...

【讨论】:

好的,我会尝试,但我认为字符串 "C:\\Program Files\\XMedCon\\bin\\xmedcon.exe";没问题

以上是关于如何使用 QProcess 运行命令行?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QProcess 运行 vim 终端

如何在 PySide 中获取 QProcess 运行的命令的输出?

linux下QT中如何使用QProcess运行linux命令。

使用 QProcess 获取所有正在运行的进程信息

如何在 QProcess 中使用 cmd.exe 命令

在 Android 平台上通过 QProcess 运行 shell 命令