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