Розбираємося у main.cpp
Роль main.cpp
Хоча для оболонок програм на основі Kirigami використовується QML, модулі обробки, зазвичай, пишуть мовою C++ через її швидкість та гнучкість. На попередніх сторінках ми доволі докладно розбиралися із кодом QML, а тепер нам треба розібратися із кодом мовою C++ нашого модуля обробки, щоб зробити програми кориснішими за ті, які ми могли б написати, використовуючи лише QML.
У цьому розділі ми вивчимо файл main.cpp
, який було створено на сторінці «Вступ» з метою удосконалення знань щодо того, що відбувається у центральному файлі мовою C++ нашої програми. Хоча це базовий варіант main.cpp
, можливості, які ми вивчатимемо, лишатимуться характерними для будь-яких програм, які ви створюватимете.
Призначення
|
|
Спочатку нам слід включити декілька файлів заголовків Qt, за допомогою яких ми зможемо скористатися відповідними функціями. У нашому випадку ми включимо заголовки Qt, які пов'язано із обробкою логіки програми, читанням файлів QML і доступом до файлів, які визначено у resources.qrc
.
Введемо нашу основну функцію. Його перший рядок QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
вмикає масштабування із високою роздільністю. Це надає нашій програмі належним чином масштабувати вікно на усіх пристроях із різними густинами пікселів на дисплеях.
Далі, ми створюємо екземпляр
QApplication
, який ми назвемо app
. Тут ми передаємо argc і argv конструктору, дозволяючи Qt обробляти і використовувати аргументи, які мають значення для Qt.
Ми також встановимо значення деяких метаданих, пов'язаних із програмою. Серед цих даних організація, якою створено програму, сайт організації та назва програми. Ми встановлюємо значення цих властивостей викликом QApplication , створенням екземпляра об'єкта, який походить від QCoreApplication і забезпечує роботу циклу обробки подій для програм, незалежно від того, мають ці програми графічний інтерфейс чи ні (отже, якщо ми запустимо нашу програму без графічного інтерфейсу, значення для цих метаданих все одно буде встановлено).
QQmlApplicationEngine
надає нам можливість завантажувати програму з файла QML, що ми і робимо у наступному рядку. У engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
ми завантажуємо нашу QML з адреси у нашому файлі ресурсів Qt (resources.qrc
).
Далі, ми перевіримо, чи наш рушій належним чином завантажив файл QML, перевіривши, чи список rootObjects() рушія є порожнім. Далі, ми можемо запустити нашу програму за допомогою app.exec() .