2017-06-17 111 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ファイルを直接実行することはできません。あなたはこのようopenコマンドに.dmgファイルパスを渡す必要があります。

$ 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

Thanks Azeem!.. –

+0

@MuhammedGül:ようこそ! :) – Azeem

関連する問題