如何使用 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 << "-f" << "F:\\33.nii" << "-c" << "dicom" << "-o" << "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 运行命令行?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PySide 中获取 QProcess 运行的命令的输出?