如何使用Qt程序中的默认应用程序打开带有相对路径的pdf

时间:2017-12-08 00:42:41

标签: c++ qt

我正在尝试从我的应用程序中打开一些硬件的pdf手册。它将从帮助菜单中触发。我似乎无法使用操作系统默认应用程序从相对路径打开文件。我找到了

QDesktopServices::openUrl(QUrl("file:///home/folder/Manual.pdf")); 
在Qt论坛上引用了

这对我有用,除了我要在另一台计算机上安装我的软件并且绝对路径不会相同。我想在我的应用程序旁边安装手册,并用

之类的东西打开它
QDesktopServices::openUrl(QUrl("file:///Manual.pdf"));

但是无法打开

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

以前有人这样做过吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

检索绝对路径
QString a = QFileInfo("Manual.pdf").absoluteFilePath();

然后以这种方式将其传递给QUrl:

QUrl url = QUrl::fromLocalFile(a);

答案 1 :(得分:1)

如果 Manual.pdf 位于可执行文件的文件夹中,请使用:

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

如果您以后决定将pdf放在专用的子文件夹中,例如 doc ,在上面的代码中将/Manual.pdf替换为/doc/Manual.pdf