Используя Qt 5.9, я кодировал программу для работы с электронными таблицами, а затем создал установщик для нее: Qt Installer Framework (QtIFW2.0.1). Затем я отправил программу многим своим друзьям. Они установили приложение на свой компьютер с Windows и теперь используют его, но у них всех есть общая проблема:
при сохранении файлов приложения эти файлы отображаются как «неизвестные» файлы на рабочем столе.
Проблема только в форме и внешнем виде сохраненных файлов, а не в их функциональности, и они открываются приложением при двойном щелчке.
Вопрос в том, какие изменения в коде необходимы для того, чтобы программа показала форму и внешний вид своих файлов?
Например, мы предлагаем коду определенную форму, используя файл изображения или тому подобное, для отображения на сохраненные файлы и таким образом, чтобы они отображались как известные.
На самом деле это не имеет ничего общего с Qt или C ++. Вам просто нужно зарегистрировать расширение вашего файла в оболочке Windows, чтобы его могли понять другие компоненты / оболочки Windows.
Вот общая информация о Типы файлов и ассоциации файлов под окнами.
Вам нужно сделать несколько записей реестра 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"
Вот Вы можете прочитать, как это работает в целом
менять myfirm.myapp.v1
, .myextension
и путь к вашему .exe с вашими предпочтительными именами.
Теперь Windows будет знать, что это за файлы с расширением .myextension
должно быть открыто вашим приложением. И если вы дважды щелкните по этим файлам, ваше приложение будет запущено с path to file
в качестве аргумента. Вы можете получить это в своем main()
функция
Чтобы установить значок для вашего расширения, добавьте запись реестра в Software\\Classes\\.myextension\\DefaultIcon
и установите в качестве значения по умолчанию полный путь к вашему приложению, чтобы окна могли получить значок расширения из файла приложения .exe.
Вы также можете сделать это во время выполнения прямо в вашем приложении:
QSettings s("HKEY_CURRENT_USER\\SOFTWARE\\CLASSES", QSettings::NativeFormat);
s.setValue(".myextension/DefaultIcon/.",QDir::toNativeSeparators(qApp->applicationFilePath()));
s.setValue(".myextension/.","myfirm.myapp.v1");
s.setValue("myfirm.myapp.v1/shell/open/command/.", QDir::toNativeSeparators(qApp->applicationFilePath()) + " %1");
РЕДАКТИРОВАТЬ: Еще один, чтобы сделать это с помощью Qt Installer, посмотрите на ответы Вот
Других решений пока нет …