赞
踩
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:
- QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.mp5\\DefaultIcon", QSettings::NativeFormat);
- 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:
- #include "Shlobj.h"
-
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
在下列两个位置之 一创建名为 DefaultIcon 的子项:
为 DefaultIcon 子项分配 类型为 REG _ SZ 的默认值,该值指定包含图标的文件的完全限定路径。
调用 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 文件。 如果文件中存在多个图标,则路径后应跟一个逗号,然后是该图标的索引。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。