检查是不是安装了 PDF 阅读器 - QDesktopServices::openUrl()
Posted
技术标签:
【中文标题】检查是不是安装了 PDF 阅读器 - QDesktopServices::openUrl()【英文标题】:Check, if a PDF-Reader is installed - QDesktopServices::openUrl()检查是否安装了 PDF 阅读器 - QDesktopServices::openUrl() 【发布时间】:2015-01-28 10:39:29 【问题描述】:我想检查是否安装了 pdf 阅读器。这个想法是使用QDesktopServices::openUrl("path/test.pdf")
,如果它返回“false”,我知道没有安装pdf阅读器。问题是,如果安装了 pdf 阅读器,它会打开 pdf。我可以“禁用”它吗?
/edit:我的解决方案:
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\OpenWithProgids", QSettings::NativeFormat);
if (settings.allKeys().size() == 0) ...
【问题讨论】:
什么是pdf阅读器? Adobe Acrobat 阅读器? QDesktopServices::openURL() 调用您用于 *.pdf 文件的标准程序。所以它可以是AdobeAcrobat阅读器,也可以是另一个程序。 【参考方案1】:我可以“禁用”它吗?
简单的答案 - 不。
由于 QDesktopServices::openUrl 要求系统使用关联程序打开文件,因此您无法通过 Qt 禁用它。
虽然不推荐,但您可以在每个平台上禁用此功能,但如果您采用该方法,我建议使用每个平台自己的功能来检查是否有与 pdf 数据文件关联的应用程序。
在 Windows 上,它存储在 registry 中,而 OS X 使用 LaunchServices。
但是,仅仅因为文件关联不存在,并不意味着没有安装合适的应用程序来打开 pdf。
如果您希望能够显示 pdf,最好直接在程序中处理它。您可以阅读该here 的一些选项。
【讨论】:
谢谢!我现在使用注册表来解决问题。我将我的解决方案添加到我的第一篇文章中。以上是关于检查是不是安装了 PDF 阅读器 - QDesktopServices::openUrl()的主要内容,如果未能解决你的问题,请参考以下文章
只有PDF文件一打开就提示windows找不到文件,请确定文件名是不是正确?