c++ - 检查是否安装了 PDF 阅读器 - QDesktopServices::openUrl()

标签 c++ qt qt4

我想检查是否安装了 pdf 阅读器。我的想法是使用 QDesktopServices::openUrl("path/test.pdf") 如果它返回“false”,我知道没有安装 pdf 阅读器。问题是,如果安装了 pdf 阅读器,它会打开 pdf。我可以“禁用”它吗?

/编辑:我的解决方案:

QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\OpenWithProgids", QSettings::NativeFormat);
 if (settings.allKeys().size() == 0) {...}

最佳答案

Can I "disable" that?

简单的回答 - 不。

由于 QDesktopServices::openUrl 要求系统使用相关程序打开文件,因此您无法通过 Qt 禁用它。

虽然不推荐,但您可以在每个平台的基础上禁用它,但如果您沿着这条路走下去,我建议使用每个平台自己的功能来检查是否有与 pdf 数据文件关联的应用程序。

在 Windows 上,它存储在 registry 中,而 OS X 使用 LaunchServices .

但是,仅仅因为文件关联不存在,并不意味着没有安装合适的应用程序来打开 pdf。

如果您希望能够显示 pdf,最好直接在您的程序中处理它。您可以阅读有关该 here 的一些选项.

关于c++ - 检查是否安装了 PDF 阅读器 - QDesktopServices::openUrl(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190125/

相关文章:

qt - 关闭应用程序时 QQuickItem 析构函数/changeListeners 崩溃(Qt 5.6)

c++ - QListView,如何调整到最适合的大小?

c++ - 我的算法的复杂性

c++ - 包含#include 指令的宏定义

Windows 上的 C++ 命名共享内存,SSD 与 HDD

main 中的 C++ 函数不起作用

c++ - Qt 没有链接到 sql

c++ - 编译 Qt 项目并包含 Qt 库

python - 角上的小部件 QTabBar 不在角上

qt - 使用 OpenGL 将图像渲染到子类 QDeclarativeItem