2016-12-13 4 views
0

を見つけることができません:: startDetached方法:QProcess:開いているアプリケーションをstartDetachedが、私はQProcessを使用して、私のQtのプログラムからPDFファイルを読むために示すを実行しようとしている引数

QProcess myProcess = QProcess(); 
myProcess.startDetached("evince", "~/mypath/doc.pdf"); 

示すがうまく起動されますが、そのHMIで「ファイルを開くことができません。そのようなファイルやディレクトリはありません」というメッセージが表示されます。

しかし、「acroread」を使ってファイルを読むと、ファイルを見つけて開くことができます。

は、あなたが完全なパス/home/user/mypath/doc.pdfを送信しようとしたことがあり:)

答えて

0

チルダ文字は、他のプログラムのための何かを意味するものではありません。

シェルの場合、これは$HOMEに相当します。 acrocreadはシェルスクリプトで、実際のアプリケーションを起動する前に暗黙的に引数を展開している可能性があります。evinceはおそらくプログラム自体であるため、自分で拡張する必要があります。

など。

QDir homeDir = QDir::home(); 
QFileInfo fileInfo(homeDir, "mypath/doc.pdf"); 

QProcess::startDetached("evince", QStringList() << fileInfo.absoluteFilePath()); 

あなたが選択したユーザーのリーダーでPDFを開きたい場合は、代わりにQDesktopServices::openUrl()を参照してください。

+0

ありがとうございます。あなたのソリューションは完璧に動作します。説明もありがとう! – user7292144

0

をご協力いただきありがとうございますか!

、1つのパラメータでそれを呼び出すことも試してみてください。

myProcess.startDetached("evince ~/mypath/doc.pdf"); 
+0

完全なパスを送信すると機能しませんが、1つのパラメータを呼び出すと機能します。ありがとうございます! – user7292144

0

私は同じ問題を抱えていたし、それを動作させることができなかった覚えています。しかし、これは私のために働いた:

QString commandLine = command + " " + parameter; 
int result = QProcess::execute(commandLine.toLatin1()); 
関連する問題