如何使用QT程序中的默认应用程序打开使用相对路径的PDF



我正在尝试从应用程序中的某些硬件打开PDF手册。它将从帮助菜单触发。我似乎无法使用OS默认应用程序从相关路径打开文件。我发现

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

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

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

但这无法使用

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

有人在此之前做过吗?

您可以用

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

然后将其传递给Qurl,这样:

QUrl url = QUrl::fromLocalFile(a);

if 手动.pdf 在可执行文件的文件夹中,使用:

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

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

最新更新