我正在尝试从我的应用程序中打开一些硬件的pdf手册。它将从帮助菜单中触发。我似乎无法使用操作系统默认应用程序从相对路径打开文件。我找到了
QDesktopServices::openUrl(QUrl("file:///home/folder/Manual.pdf"));
在Qt论坛上引用了这对我有用,除了我要在另一台计算机上安装我的软件并且绝对路径不会相同。我想在我的应用程序旁边安装手册,并用
之类的东西打开它QDesktopServices::openUrl(QUrl("file:///Manual.pdf"));
但是无法打开
ShellExecute 'file:///Manual.pdf' failed (error 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
。