检查是否安装了 PDF-Reader - QDesktopServices::openUrl()

Check, if a PDF-Reader is installed - QDesktopServices::openUrl()

我想检查是否安装了 pdf-reader。我的想法是使用 QDesktopServices::openUrl("path/test.pdf") 如果它的 return "false" 我知道没有安装 pdf-reader 。问题是,如果安装了 pdf-reader,它会打开 pdf。我可以"disable"吗?

/编辑:我的解决方案:

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, while OS X uses LaunchServices

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

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

的一些选项