2026-10-11 22:32:13 +03:00
|
|
|
|
# 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`
|
2026-10-23 09:55:15 +03:00
|
|
|
|
(в CMake это `PROJECT_VERSION` плюс `LAUNCHER_VERSION_SUFFIX`, например `1.0.1-dev`; QML читает её
|
|
|
|
|
|
через `Qt.application.version`), организация `GaleonDev`, домен `galeonworx.com`. На
|
2026-10-11 22:32:13 +03:00
|
|
|
|
пути к данным лаунчера это не влияет, см. [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`.
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
При создании этого документа использовался ИИ.
|