2017-12-08 12 views
1

私のアプリケーション内から一部のハードウェアのpdfマニュアルを開こうとしています。ヘルプメニューから起動します。 OSのデフォルトアプリケーションを使用して、アプリケーションが相対パスからファイルを開くことができないようです。私はQtのフォーラムで参照 Qtプログラムのデフォルトアプリケーションを使用して相対パスでPDFを開くにはどうすればいいですか

QDesktopServices::openUrl(QUrl("file:///home/folder/Manual.pdf")); 

を発見し、私は別のコンピュータ上で私のソフトウェアをインストールするつもりですし、絶対パスは同じではありません除いて、これは私のために動作します。私は自分のアプリケーションの隣のマニュアルをインストールして

QDesktopServices::openUrl(QUrl("file:///Manual.pdf")); 

のようなもので開きたいのですが、これは

ShellExecute 'file:///Manual.pdf' failed (error 2). 

で開くことができない誰もが前にこれを行っていますか?

答えて

1

あなたは、その後、QUrlにこの方法を渡し

QString a = QFileInfo("Manual.pdf").absoluteFilePath(); 

との絶対パスを取得することができます。

QUrl url = QUrl::fromLocalFile(a); 
+0

私は両方の答えが述べたように問題を解決すると思いますが、これはおそらく別の開発者が後で別の前提や変更を行うと、実行ディレクトリ対データディレクトリ対実行可能ディレクトリを変更するときに良いでしょう。ありがとう。 – Brandon

1

Manual.pdfは、実行可能ファイルのフォルダにある場合は、使用を:

QDesktopServices::openUrl(QUrl("file:///" + QApplication::applicationDirPath() + "/Manual.pdf")); 

後でpdfを専用サブ例えば、 のコードでは、/Manual.pdf/doc/Manual.pdfに置き換えます。

関連する問題