Разбор main.cpp
Роль main.cpp
Для интерфейса приложений Kirigami используется QML, тогда как бэкенд обычно пишется на C++ благодаря скорости и гибкости этого языка. Хотя на предыдущих страницах QML был подробно рассмотрен, необходимо разобраться в коде бэкенда на C++, чтобы создавать приложения, более полезные, чем те, которых можно добиться на чистом QML.
Здесь будет рассмотрен файл main.cpp, созданный на странице Начало работы, чтобы лучше понять, что происходит в центральном файле C++ приложения. Хотя этот main.cpp — базовый, рассматриваемые возможности останутся необходимыми независимо от того, какое приложение будет создано.
Назначение
| |
Сначала нужно включить ряд заголовочных файлов Qt, позволяющих использовать их функции. В данном случае включается ряд заголовков Qt, отвечающих за логику приложения, а также позволяющих читать файлы QML.
Затем создаётся экземпляр QApplication, которому присваивается имя app. Для вызова конструктора требуется передать argc и argv.
Также задаются некоторые метаданные, относящиеся к приложению. К ним относятся организация, создавшая приложение, веб-сайт организации и название приложения. Эти свойства задаются вызовом QApplication, при котором создаётся объект, происходящий от QCoreApplication и предоставляющий приложениям цикл обработки событий независимо от того, есть ли у них графический интерфейс (поэтому если программа запущена без графического интерфейса, эти метаданные всё равно будут заданы).
Чтобы приложение хорошо выглядело со значками Breeze и оформлением Breeze от KDE в средах, отличных от Plasma, таких как Windows или GNOME, нужно выполнить три действия:
- Инициализируйте средства работы с темами из KIconThemes на платформах, где темы значков не входят в состав системы (например, Windows или MacOS), с помощью KIconTheme::initTheme()
- Задайте QStyle с помощью QApplication::setStyle(), чтобы принудительно использовать Breeze вместо встроенного оформления платформы
- Задайте стиль QtQuick Controls с помощью QQuickStyle::setStyle(), чтобы принудительно использовать Breeze с qqc2-desktop-style из KDE
Вызов KIconTheme::initTheme() необходимо выполнить до создания QApplication — это позволяет приложению найти значки Breeze для использования. Установка QStyle в Breeze требуется, поскольку в приложении вместо QGuiApplication используется QApplication. Сами элементы управления в окне, такие как кнопки и флажки, будут следовать Breeze благодаря использованию qqc2-desktop-style.
QQmlApplicationEngine позволяет загрузить приложение из файла QML, что и делается в следующей строке. В engine.loadFromModule("org.kde.tutorial", "Main"); QML загружается из импорта URI, определённого в CMake.
Далее проверяется, правильно ли движок загрузил файл QML: список rootObjects() движка должен быть не пуст. После этого приложение можно запустить с помощью app.exec().