2017-06-17 43 views
0

我想从我的QT应用程序运行iBooks。 我试过QProcess :: execute()和QProcess :: start(),但都没有工作。osX - 如何从我的QT应用程序启动另一个程序

QString program ="/Users/muhammed/Applications/iBooks.dmg"; 
QStringList arguments; 
QProcess *q=new QProcess(this); 
q->start(program,(QStringList) arguments<<"/Users/muhammed/Applications/iBooks.dmg"); 

当我使用此代码时没有任何反应。请帮忙。

+0

['QProcess :: start'](http://doc.qt.io/qt-5/qprocess.html#start)的第一个参数必须是可执行的。它看起来好像只是将路径传递给下载映像。 –

+0

我作为第一个参数传递的内容是iBooks应用程序的目录。 –

+0

真的吗?在命令行中输出“file /Users/muhammed/Applications/iBooks.dmg”是什么?这是不是像“zlib压缩数据”? –

回答

0

您无法直接运行.dmg文件。您需要将.dmg文件路径传递给open命令是这样的:

$ open application.dmg 

所以,你的Qt代码看起来像这样与QProcess::execute静态方法:

QProcess::execute("open", { "your-dmg-file-path-here" }); 

或者,

const QString dmgPathArg { "your-dmg-file-path-here" }; 

QProcess process {}; 
process.start("open", { dmgPathArg }); 

if (!process.waitForFinished(-1)) 
{ 
    qDebug() << process.readAllStandardError(); 
    return; 
} 

qDebug() << process.readAllStandardOutput(); 

实际上,会出现一些错误字符串,您可以使用readAllStandardError()readAllStandardOutput()方法查看。

查看QProcess的文档。它有一些很好的例子,开始。

希望有所帮助。

+0

谢谢Azeem!.. –

+0

@MuhammedGül:不客气! :) – Azeem

相关问题