tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
tests / macos (push) Successful in 1m20s
tests / linux (push) Successful in 2m14s
tests / windows (push) Failing after 23m21s
version number Signed-off-by: galeon <dertiellis@gmail.com>
3.1 KiB
3.1 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(в CMake этоPROJECT_VERSIONплюсLAUNCHER_VERSION_SUFFIX, например1.0.1-dev; QML читает её черезQt.application.version), организация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.
При создании этого документа использовался ИИ.