这实际上与 Qt 或 C++ 本身无关。您只需在 Windows shell 中注册您的文件扩展名,以便其他 Windows 组件/shell 可以理解它。
这是有关windows 下文件类型和文件关联的一般信息。
您需要创建一些如下所示的 Windows 注册表项:
例子.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"
在这里您可以阅读它的一般工作原理
myfirm.myapp.v1
将 .exe的路径和路径更改.myextension
为您喜欢的名称。现在 Windows 将知道.myextension
您的应用程序应该打开哪些带有扩展名的文件。如果您双击此文件,您的应用程序将path to file
作为参数运行。你可以在你的main()
函数中得到它
要为您的扩展程序设置图标,请添加注册表项Software\\Classes\\.myextension\\DefaultIcon
并将其默认值设置为您的应用程序的完整路径,以便 Windows 可以从您的 .exe 应用程序文件中获取扩展程序的图标。
您也可以在运行时直接在您的应用程序中执行此操作:
QSettings s("HKEY_CURRENT_USER\\SOFTWARE\\CLASSES", QSettings::NativeFormat);
QString path = QDir::toNativeSeparators(qApp->applicationFilePath());
s.setValue(".myextension/DefaultIcon/.", path);
s.setValue(".myextension/.","myfirm.myapp.v1");
s.setValue("myfirm.myapp.v1/shell/open/command/.", QStringLiteral("\"%1\"").arg(path) + " \"%1\"");
编辑:还有一个,用 Qt Installer 来做,看看这里的答案