使Qt / C ++程序显示其在Windows上已知的文件类型

时间:2017-09-14 11:35:36

标签: c++ qt installer qt-installer qt5.9

使用Qt 5.9我编写了一个电子表格程序,然后通过 Qt Installer Framework (QtIFW2.0.1)为它创建了一个安装程序。然后我把程序发给了很多朋友。他们在他们的Windows机器上安装了应用程序,现在正在使用它,但它们都有一个共同的问题:
当他们保存应用程序的文件时,这些文件显示为"未知"桌面上的文件。

问题仅在于存储文件的形状和外观而不是它们的功能,如果双击它们会被应用程序打开。

问题是,需要对代码进行哪些更改才能使程序生成其文件'已知的形状/外观?
例如,我们使用图像文件或类似方式为代码提供特定形状,以便映射到存储的文件上,并且它们显示为已知的方式。

1 个答案:

答案 0 :(得分:2)

这实际上与Qt或C ++本身无关。您只需要在Windows shell中注册文件扩展名,以便其他Windows组件/ shell可以理解它。

以下是有关Windows下File Types and File Associations的一般信息。

您需要制作一些如下所示的Windows注册表项:

example.reg:

Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Classes\myfirm.myapp.v1\shell\open\command]
    @="c:\path\to\your\app.exe \"%1\""
    [HKEY_CURRENT_USER\Software\Classes\.myextension]
    @="myfirm.myapp.v1"

Here你可以阅读它的工作原理

将{。{1}},myfirm.myapp.v1和.exe的路径更改为您的首选名称。 现在,Windows将知道应用程序应该打开扩展名为.myextension的文件。如果您双击此文件,您的应用程序将以.myextension作为参数运行。您可以在path to file函数

中获取它

要为您的分机设置图标,请在main()中添加注册表项,并将其设置为应用的完整路径,以便Windows可以从您的.exe应用文件中获取扩展图标。

您也可以直接在您的应用中在运行时执行此操作:

Software\\Classes\\.myextension\\DefaultIcon

编辑:还有一个,用Qt安装程序来看看答案here