2017-06-17 78 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

相關問題