【问题标题】:How to run command line with QProcess?如何使用 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 后它运行良好

标签: c++ qt qprocess


【解决方案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";没问题
最近更新 更多