当前位置:   article > 正文

Qt为文件指定图标的思路_qt 关联文件的图标

qt 关联文件的图标

On Windows it's a two-part operation. See the docs: How to Assign a Custom Icon to a File Type.
So first set an icon for your file extension like this:

  1. QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.mp5\\DefaultIcon", QSettings::NativeFormat);
  2. reg.setValue("Default", "C:\\Path\\To\\some_icon.ico");

This is a per-user setting. If you want it for all users change "HKEY_CURRENT_USER" to "HKEY_LOCAL_MACHINE", but your app will need elevated access for that.

After that you need to let the shell (explorer.exe) know that you changed something so it updates. Unfortunately Qt can't help you with that part so you need to reach to the native api:

  1. #include "Shlobj.h"
  2. SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);

Instructions

步骤 1:

在下列两个位置之 一创建名为 DefaultIcon 的子项:

  • 对于文件类型分配 ,HKEY CLASSES _ _ ROOT \ .extension
  • 对于应用程序分配 ,HKEY _ CLASSES _ ROOT \ ProgID

步骤 2:

为 DefaultIcon 子项分配 类型为 REG _ SZ 的默认值,该值指定包含图标的文件的完全限定路径。

步骤 3:

调用 SHChangeNotify 函数以通知 Shell 更新其图标缓存。

备注

以下示例显示了文件类型图标分配所需的注册表项的详细视图。 文件扩展名与应用程序关联,但图标分配是文件扩展名本身,因此关联的应用程序不会指示默认图标。

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
      DefaultIcon
         (Default) = C:\MyDir\MyProgram.exe,2

以下示例显示了应用程序图标分配所需的注册表项的详细视图。 .myp 文件扩展名首先与 MyProgram.1 应用程序关联。 然后,为 MyProgram.1 ProgID 子项分配自定义默认图标。

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   MyProgram.1
      DefaultIcon
         (Default) = C:\MyDir\MyProgram.exe,2

任何包含图标的文件都可接受,包括 .ico、.exe 和 .dll 文件。 如果文件中存在多个图标,则路径后应跟一个逗号,然后是该图标的索引。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/306742?site
推荐阅读
相关标签
  

闽ICP备14008679号