Pochopenie main.cpp
Úloha main.cpp
Zatiaľ čo QML sa používa pre frontend aplikácií Kirigami, backend je zvyčajne napísaný v C++ vďaka rýchlosti a flexibilite tohto jazyka. Hoci sme na predchádzajúcich stránkach pokryli QML do veľkej hĺbky, budeme musieť získať pochopenie nášho backendového kódu C++, aby sme mohli vytvárať aplikácie, ktoré sú užitočnejšie než to, čo dokážeme dosiahnuť čistým QML.
Tu si prejdeme súbor main.cpp, ktorý sme vytvorili na stránke Začíname, aby sme lepšie pochopili, čo sa deje v centrálnom súbore C++ našej aplikácie. Hoci ide o základný main.cpp, funkcie, ktoré si prejdeme, zostanú nevyhnutné bez ohľadu na to, aký druh aplikácie sa rozhodnete vytvoriť.
Čo robí
| |
Najprv musíme zahrnúť niekoľko hlavičkových súborov Qt, čo nám umožní používať ich funkcie. V tomto prípade zahrnieme niekoľko hlavičiek Qt, ktoré spracovávajú logiku aplikácie a umožňujú nám čítať súbory QML.
Potom vytvoríme inštanciu QApplication, ktorú nazveme app. Odovzdanie argc a argv do konštruktora je pre toto volanie vyžadované.
Nastavíme tiež niektoré metadáta týkajúce sa aplikácie. Tie zahŕňajú organizáciu, ktorá vytvorila aplikáciu, webovú stránku organizácie a názov aplikácie. Tieto vlastnosti nastavujeme volaním QApplication, vytvorením inštancie objektu, ktorý pochádza z QCoreApplication a poskytuje slučku udalostí pre aplikácie bez ohľadu na to, či majú GUI alebo nie (takže ak by sme spustili náš program bez QML, stále by sme mali funkčnú aplikáciu, len bez grafických prvkov).
Aby naša aplikácia vyzerala dobre s ikonami Breeze a štýlom Breeze od KDE v prostrediach mimo Plasma, ako napríklad Windows alebo GNOME, musíme urobiť tri veci:
- inicializovať tématické nástroje KIconThemes na platformách, kde témy ikon nie sú súčasťou systému (ako Windows alebo MacOS) pomocou KIconTheme::initTheme()
- nastaviť QStyle pomocou QApplication::setStyle() na vynútenie Breeze namiesto natívneho štýlu platformy
- nastaviť štýl QtQuick Controls pomocou QQuickStyle::setStyle() na vynútenie Breeze s qqc2-desktop-style od KDE
Volanie KIconTheme::initTheme() musí byť vykonané pred vytvorením QApplication a umožňuje aplikácii nájsť ikony Breeze na použitie. Nastavenie QStyle na Breeze je potrebné, pretože sme použili QApplication pre našu aplikáciu namiesto QGuiApplication. Skutočné ovládacie prvky rozhrania v okne ako tlačidlá a zaškrtávacie políčka budú nasledovať Breeze pomocou qqc2-desktop-style.
QQmlApplicationEngine nám umožňuje načítať aplikáciu zo súboru QML, čo urobíme na ďalšom riadku. V engine.loadFromModule("org.kde.tutorial", "Main"); načítame náš QML z importu URI definovaného v CMake.
Ďalej skontrolujeme, či náš engine správne načítal súbor QML kontrolou, že zoznam rootObjects() enginu nie je prázdny. Potom môžeme spustiť našu aplikáciu pomocou app.exec().