我想检查一下是否安装了pdf阅读器。我的想法是使用QDesktopServices::openUrl("path/test.pdf")
,如果它返回“false”,我知道没有安装pdf阅读器。问题是,如果安装了pdf-reader,它会打开pdf。我可以“禁用”吗?
/ edit:我的解决方案:
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\OpenWithProgids", QSettings::NativeFormat);
if (settings.allKeys().size() == 0) {...}
答案 0 :(得分:1)
我可以"禁用"是什么?
简单回答 - 不。
由于QDesktopServices :: openUrl要求系统使用相关程序打开文件,因此您无法通过Qt禁用该文件。
虽然不推荐,但您可以在每个平台的基础上禁用此功能,但是如果您要沿着这条路线走下去,我建议使用每个平台自己的功能来检查是否存在与之关联的应用程序pdf数据文件。
在Windows上,它存储在registry中,而OS X使用LaunchServices。
但是,仅仅因为文件关联不存在,并不意味着没有安装合适的应用程序来打开pdf。
如果您希望能够显示pdf,那么您最好直接在程序中处理它。您可以阅读here的一些选项。