# main.cpp Точка входа. Объектов предметной области здесь нет: `LauncherBackend` создаёт сам [Main.qml](../qml/Main.md), а `main()` только готовит приложение и загружает QML. ## По порядку 1. **WebEngine.** Если лаунчер собран с Qt WebEngine (`LAUNCHER_HAS_WEBENGINE`), `QtWebEngineQuick::initialize()` вызывается до создания `QGuiApplication`. После создания приложения общий контекст OpenGL уже не выставить. 2. **`QGuiApplication`**, а не `QApplication`: виджетов в проекте нет. 3. **Имя и версия.** `applicationName` = `BiLauncher`, `applicationVersion` = `LAUNCHER_VERSION` (в CMake это `PROJECT_VERSION` плюс `LAUNCHER_VERSION_SUFFIX`, например `1.0.1-dev`; QML читает её через `Qt.application.version`), организация `GaleonDev`, домен `galeonworx.com`. На пути к данным лаунчера это не влияет, см. [launcherpaths.h](launcherpaths.md). 4. **Иконка окна.** На Windows и Linux в `QIcon` складываются все PNG из ресурса `:/icons/` (16–512 и `@2x`). На macOS этот шаг пропущен: там иконку берут из `icon.icns` внутри бандла. 5. **`setDesktopFileName("bilauncher")`.** По этому имени окружения рабочего стола в Linux связывают окно с `bilauncher.desktop` и показывают правильную иконку в панели. 6. **Тексты.** `Localization::instance().load()` читает `i18n/translations.json` и язык из `settings.json`. Это нужно сделать до создания движка: язык должен быть известен до первой привязки. Если каталог не загрузился, `main()` возвращает `-1` (см. [Localization](Localization.md)). 7. **Стиль `Basic`.** Окна оформлены вручную, а нативный стиль Windows игнорирует свои `contentItem` и `background` и засыпает журнал предупреждениями. 8. **Движок.** `QQmlApplicationEngine`. Если корневой объект не создался, приложение завершается с `-1`. Соединение отложенное (`Qt::QueuedConnection`), чтобы выход произошёл уже в цикле событий, а не посреди загрузки. 9. `engine.loadFromModule("BiLauncher", "Main")` — загрузка по URI модуля и имени типа. 10. `app.exec()`. Аргументы командной строки не разбираются. Контекстных свойств нет: QML общается с C++ только через зарегистрированные типы `LauncherBackend` и `Loc`. --- При создании этого документа использовался ИИ.