Nastavenie s C++
Inštalácia Kirigami
Pred začiatkom budeme musieť nainštalovať Kirigami na náš počítač. Existujú tri spôsoby, ako to urobiť:
- Inštalácia Kirigami z repozitárov vašej distribúcie Linux
- Použitie kde-builder
- Inštalácia Kirigami pomocou Craft
Ak ste na dostatočne aktuálnej distribúcii, ako je Debian Testing, najnovšie non-LTS Ubuntu, Fedora, openSUSE Tumbleweed alebo Arch, môžete nainštalovať Kirigami z vašej distribúcie.
Ak ste na nie dostatočne aktuálnej distribúcii, ako je Debian Stable alebo LTS Ubuntu, mali by ste pre tento tutoriál použiť kde-builder. Mal by zabrať nanajvýš 2 GB úložiska.
Inštalácia Kirigami z repozitárov vo vašej distribúcii Linuxu
Potrebujeme kompilátor C++, vývojové balíky Qt a Kirigami. Otvorte terminál a spustite jeden z nasledujúcich príkazov v závislosti od distribúcie Linux, ktorú používate:
sudo apt install build-essential cmake extra-cmake-modules libkirigami-dev libkf6i18n-dev libkf6coreaddons-dev libkf6iconthemes-dev qt6-base-dev qt6-declarative-dev libkf6qqc2desktopstyle-dev | |
sudo pacman -S base-devel extra-cmake-modules cmake kirigami ki18n kcoreaddons breeze kiconthemes qt6-base qt6-declarative qqc2-desktop-style | |
sudo zypper install cmake kf6-extra-cmake-modules kf6-kirigami-devel kf6-ki18n-devel kf6-kcoreaddons-devel kf6-kiconthemes-devel qt6-base-devel qt6-declarative-devel qt6-quickcontrols2-devel kf6-qqc2-desktop-style | |
sudo dnf install @development-tools @development-libs cmake extra-cmake-modules kf6-kirigami2-devel kf6-ki18n-devel kf6-kcoreaddons-devel kf6-kiconthemes-devel qt6-qtbase-devel qt6-qtdeclarative-devel qt6-qtquickcontrols2-devel kf6-qqc2-desktop-style |
Ďalšie informácie pre ostatné distribúcie nájdete v časti Inštalácia závislostí na zostavenie.
Použitie kde-builder
Nastavte si vývojové prostredie pomocou kde-builder. To vám poskytne potrebné vývojové nástroje a základné knižnice a zostaví KDE Frameworks od nuly.
Vytvorte priečinok ~/kde/src/kirigami-tutorial. Do tohto priečinka umiestnite súbory zdrojového kódu z tohto tutoriálu.
Pridajte nasledujúce na koniec vášho ~/.config/kde-builder.yaml:
project kirigami-tutorial:
no-src: true⏳ S kdesrc-build...
Click here to know how this was done with kdesrc-build
Tento krok sa predtým robil zápisom do ~/.config/kdesrc-buildrc s odlišnou syntaxou:
# after include ${module-definitions-dir}/kf6-qt6.ksb
module kirigami-tutorial
no-src
end moduleInštalácia Kirigami pomocou Craft
KDE má vlastný nástroj na jednoduchú inštaláciu väčšiny svojich knižníc a programov: Craft. Dá sa použiť na inštaláciu Kirigami na Windows, Android a macOS.
Aj keď je Craft dostupný aj pre Linux a FreeBSD, jeho zamýšľané použitie je iba pre AppImages a balenie.
Budete musieť nasledovať inštrukcie na nastavenie Craft. Na konci nastavenia by ste mali spustiť súbor nastavenia prostredia (craftenv.ps1 vo Windows alebo craftenv.sh na všetkých ostatných platformách), ktorý vám dá terminálový shell, kde budete kompilovať vašu aplikáciu Kirigami.
Potom môžete spustiť nasledovné v termináli:
craft kirigami kcoreaddons ki18n breeze kiconthemes qqc2-desktop-styleToto bude pri prvom spustení chvíľu trvať. Ak zatvoríte terminál, môžete spustiť súbor nastavenia prostredia na opätovnú prípravu terminálu.
Štruktúra projektu
Hoci existujú nástroje, ktoré môžu jednoducho nastaviť naše súbory, vytvoríme ich manuálne. To nám umožní lepšie pochopiť časti, z ktorých sa bude skladať naša nová aplikácia.
Najprv vytvoríme priečinok nášho projektu (môžete použiť nižšie uvedené príkazy). Náš budeme volať kirigami-tutorial/.
kirigami-tutorial/
├── CMakeLists.txt
├── org.kde.tutorial.desktop
└── src/
├── CMakeLists.txt
├── main.cpp
└── Main.qmlV tomto priečinku vytvoríme priečinok src/ a CMakeLists.txt. Všeobecne sa považuje za dobrú prax umiestniť všetky naše hlavné súbory kódu C++ do priečinka src/. Tiež do neho umiestnime súbor Main.qml, pretože sa bude spúšťať spolu so spustiteľným súborom.
Hore
Túto štruktúru súborov môžete rýchlo vytvoriť pomocou:
mkdir -p kirigami-tutorial/src
touch kirigami-tutorial/{CMakeLists.txt,org.kde.tutorial.desktop}
touch kirigami-tutorial/src/{CMakeLists.txt,main.cpp,Main.qml}Poznámka
V prípade, že chcete automaticky zostaviť projekt pomocou kde-builder, názov vlastného modulu by mal byť rovnaký ako koreňový priečinok projektu (v našom prípade to bude "kirigami-tutorial"), inak by ste museli prispôsobiťsource-dir alebo dest-dir pre modul. Budeme predpokladať, že cesta k vášmu main.cpp bude ~/kde/src/kirigami-tutorial/src/main.cpp.Main.qml
| |
Tu budeme spracovávať frontend našej aplikácie.
Ak poznáte trochu Javascript, potom sa vám veľa z QML bude zdať povedomé (aj keď má svoje zvláštnosti). Dokumentácia Qt má rozsiahle množstvo materiálu o tomto jazyku, ak chcete skúsiť niečo na vlastnú päsť. V priebehu týchto tutoriálov sa zameriame veľkú časť pozornosti na náš QML kód, kde môžeme využiť Kirigami na maximum.
Zatiaľ sa zameriame na Main.qml. Najprv importujeme niekoľko dôležitých modulov:
- QtQuick, štandardná knižnica používaná v aplikáciách QML.
- QtQuick Controls, ktorá poskytuje množstvo štandardných ovládacích prvkov, ktoré môžeme použiť na interaktívnosť našich aplikácií.
- QtQuick Layouts, ktorá poskytuje nástroje na umiestňovanie komponentov v rámci okna aplikácie.
- Kirigami, ktorá poskytuje množstvo komponentov vhodných na vytváranie aplikácií fungujúcich na zariadeniach rôznych tvarov a veľkostí.
Poznámka
Umiestnenie importov QtQuick Controls a Kirigami do samostatných menných priestorov pomocou kľúčového slovaas je osvedčený postup, ktorý zabezpečuje, že žiadne komponenty s rovnakým názvom nemôžu kolidovať. V praxi môžete vidieť rôzne názvy pre QtQuick Controls, ako napríklad "QQC" alebo "QQC2". V tomto tutoriáli budeme pre prehľadnosť používať "Controls".Potom sa dostávame k nášmu základnému prvku, Kirigami.ApplicationWindow, ktorý poskytuje niektoré základné funkcie potrebné pre všetky aplikácie Kirigami. Toto je okno, ktoré bude obsahovať každú z našich stránok, hlavné sekcie nášho UI.
Potom nastavíme vlastnosť id okna na "root". ID sú užitočné, pretože nám umožňujú jednoznačne odkazovať na komponent, aj keď máme niekoľko rovnakého typu.
Nastavíme tiež vlastnosť title okna na "Hello World". Všimnete si, že sme obalili náš reťazec "Hello World" do funkcie i18nc(), kde uvedieme kontext reťazca aj samotný reťazec.
Poznámka
Funkcie i18n() robia vašu aplikáciu ľahšie preložiteľnou, pretože vracajú verziu poskytnutého reťazca v jazyku používateľa (pokiaľ bola vaša aplikácia lokalizovaná do tohto jazyka). Kým anglický používateľ vidí náš nadpis okna ako "Hello World", španielsky používateľ by videl "Hola Mundo".
i18nc() nadväzuje na funkciu i18n() tým, že umožňuje vývojárom poskytnúť nejaký kontext prekladateľom pracujúcim na aplikácii. Tu objasňujeme, že komponent UI je nadpis okna aplikácie, takže sme zahrnuli reťazec "@title:window" pred "Hello World". Ďalšie podrobnosti nájdete v Príručke pre programátorov Ki18n.
Potom nastavíme prvú stránku nášho zásobníka stránok. Väčšina aplikácií Kirigami je organizovaná ako zásobník stránok, pričom každá stránka obsahuje súvisiace komponenty vhodné pre konkrétnu úlohu. Zatiaľ to udržujeme jednoduché a zostávame pri jednej stránke. pageStack je pôvodne prázdny zásobník stránok poskytovaný Kirigami.ApplicationWindow a pomocou pageStack.initialPage: Kirigami.Page {...} nastavíme prvú stránku prezentovanú pri načítaní aplikácie na Kirigami.Page. Táto stránka bude obsahovať všetok náš obsah.
Nakoniec zahrnieme na našu stránku Controls.Label, ktorý nám umožní umiestniť text na stránku. Používame anchors.centerIn: parent na vycentrovanie nášho popisku horizontálne a vertikálne v rámci rodičovského prvku. V tomto prípade je rodičovským komponentom nášho popisku Kirigami.Page. Posledná vec, ktorú musíme urobiť, je nastaviť jeho text: text: i18n("Hello World!").
org.kde.tutorial.desktop
Primárnym účelom súborov Desktop Entry je zobraziť vašu aplikáciu v spúšťači aplikácií v Linuxe. Ďalším dôvodom mať ich je mať ikony okien na Waylande, pretože sú potrebné na to, aby povedali kompozitoru "toto okno patrí k tejto ikone".
Musí nasledovať schému pomenovania s obráteným DNS s príponou .desktop, ako napríklad org.kde.tutorial.desktop:
| |
Poznámka
Ikony okien a panela úloh budú fungovať v relácii Wayland iba ak sú súbory desktop aplikácií umiestnené v~/.local/share/applications alebo /usr/share/applications. Aby ikony v tomto tutoriáli fungovali, buď skopírujte súbor desktop aplikácie tam, alebo prepnite na vývojovú reláciu podľa pokynov v tutoriáli kde-builder. Niektoré aplikácie KDE môžu mať fungujúce ikony, ak už boli nainštalované v systéme.CMakeLists
Súbory CMakeLists.txt sú potrebné na použitie zostavovacieho systému KDE podľa výberu, CMake. Náš súbor kirigami-tutorial/CMakeLists.txt bude špecifikovať niektoré vlastnosti našej aplikácie. Tiež zahŕňa niektoré závislosti, ktoré potrebujeme na kompiláciu nášho projektu.
| |
CMakeLists.txt definuje, ako sa zostavujú vaše projekty. Väčšina obsahu tu je len na spustenie vášho projektu. Podrobné vysvetlenie riadok po riadku, čo tento súbor CMakeLists robí, si môžete prečítať tu.
Najdôležitejšia vec, ktorú si treba zapamätať, je, že zostavovacie závislosti C++ Qt a KDE Frameworks sú spravované pomocou find_package() a QML závislosti v čase behu sú spravované pomocou ecm_find_qml_module(). Budete musieť upraviť tieto riadky a zahrnúť akékoľvek ďalšie komponenty, ktoré sa rozhodnete použiť počas vývoja vašej aplikácie.
Riadok s add_subdirectory(src) nasmeruje CMake do adresára kirigami-tutorial/src/, kde sa nachádza náš zdrojový kód.
Riadok s install() hovorí CMake, kam nainštalovať súbor desktop.
Poďme sa ponoriť do súboru kirigami-tutorial/src/CMakeLists.txt.
| |
Tento súbor pozostáva z piatich krokov:
- vytvorenie spustiteľného súboru
- premeniť spustiteľný súbor na modul QML, ktorý prijíma súbory QML
- pridanie súborov C++ a QML do spustiteľného súboru
- prepojenie knižníc potrebných na spustenie
- inštalácia spustiteľného súboru na správne miesto
Nabudúce, keď budete potrebovať pridať ďalšie QML súbory, pridajte ich do existujúceho volania ecm_target_qml_sources(). Súbory C++, ktoré používajú kľúčové slovo QML_ELEMENT, ktoré uvidíme neskôr v tutoriáli, sa dajú pridať pomocou target_sources().
Teraz, keď sme sa postarali o CMake, pozrime sa na súbory, s ktorými budeme tráviť väčšinu nášho času.
main.cpp
Súbor kirigami-tutorial/src/main.cpp spracováva "biznis logiku" našej aplikácie. C++ je praktické, pretože je flexibilné a rýchle, aj keď je náročnejšie ako iné programovacie jazyky.
Tiež slúži ako vstupný bod do našej aplikácie. Obe časti nášho projektu, backend a používateľské rozhranie, sú tu nastavené a spustené.
| |
Zatiaľ nemusíme zachádzať do prílišných detailov ohľadom toho, čo robí náš kód main.cpp, ale jeho úloha sa výrazne zvýši, keď sa rozhodneme pridať zložitejšiu funkčnosť do našej aplikácie v budúcnosti.
Témy na Windows
Click here to read more
Aplikácia musí nastaviť svoju tému ikon, QStyle a štýl QtQuick Controls na Breeze, aby sa zobrazila v systéme Windows. Viac o tom sa dozviete v časti Pochopenie main.cpp.
Ak sa chcete dostať dopredu, môžete si prečítať viac o tom, ako tento main.cpp funguje, v časti Pochopenie main.cpp.
Ak chcete vidieť niekoľko spôsobov, ako sa dá kód C++ vylepšiť, napríklad použitím KAboutData pre preložiteľné metadáta aplikácie, určite si pozrite náš tutoriál KXmlGui.
Zatiaľ nás zaujíma tento riadok:
engine.loadFromModule("org.kde.tutorial", "Main");Prvý argument je URI nastavené v kirigami-tutorial/src/CMakeLists.txt a druhý argument je názov QML modulu, ktorý chceme použiť (Main, pochádzajúci z názvu nášho súboru Main.qml, ktorý musí začínať veľkým písmenom).
Stará metóda
You might encounter this alternative way to load QML files in real code!
Stará metóda načítavania QML súborov mala niektoré nevýhody a po Qt6 sa stala nadmerne podrobnou:
engine.load(QUrl(QStringLiteral("qrc:/qt/qml/org/kde/tutorial/qml/Main.qml")));Toto Qt URI zdroja vyššie nasleduje vzor <resource_prefix><import_URI><optional_QML_dir><file>. V tomto prípade:
- prefix zdrojov = predvolený / v Qt5, /qt/qml v Qt6
- import URI = /org/kde/tutorial, čo zodpovedá URI org.kde.tutorial
- voliteľný priečinok QML = /qml, nevyhnutný ak sú súbory QML uložené v priečinku nazvanom qml/
- file = súbor QML
Zostavenie a inštalácia aplikácie
Sme takmer na cieľovej čiare. Posledná vec, ktorú musíme urobiť, je zostaviť a spustiť našu aplikáciu. Postup bude závisieť od toho, na akej platforme sa nachádzate.
Linux alebo FreeBSD
Zostavenie pomocou kde-builder
Uistite sa, že ste nasledovali pokyny v časti Použitie kde-builder.
Skompilujte potrebné zostavovacie závislosti pomocou kde-builder, potom skompilujte kirigami-tutorial spustením nasledujúcich príkazov v termináli:
kde-builder kirigami ki18n kcoreaddons breeze kiconthemes qqc2-desktop-style
kde-builder kirigami-tutorialManuálne zostavenie
Zmeňte adresár na koreňový priečinok projektu, potom spustite nasledujúci príkaz v termináli:
cmake -B build/ --install-prefix ~/.local
cmake --build build/
cmake --install build/Program bude nainštalovaný do ~/.local/bin a jeho súbor desktop do ~/.local/share/applications.
Okná
Ak kompilujete svoj projekt v systéme Windows po nastavení Craft, CMake by mal automaticky detekovať správny kompilátor:
cmake -B build/
cmake --build build/
cmake --install build/V závislosti od toho, ako ste nainštalovali kompilátor, možno budete musieť špecifikovať generátor CMake pre prvý krok, v závislosti od toho, či používate Visual Studio (msvc) alebo MinGW (make) na kompiláciu vašich projektov.
Ak Visual Studio, v závislosti od kompilátora, ktorý ste sa rozhodli nainštalovať, môže to byť:
cmake -B build/ -G "Visual Studio 16 2019"Alebo:
cmake -B build/ -G "Visual Studio 17 2022"Ak MinGW:
cmake -B build/ -G "MinGW Makefiles"
cmake --build build/
cmake --install build/V oboch prípadoch bude program nainštalovaný do C:\CraftRoot\bin.
Ak ste niekedy na pochybách ohľadom názvu kompilátora, ktorý by sa mal použiť vo volaní cmake, spustite:
cmake -GZobrazí zoznam všetkých dostupných generátorov.
Spustenie aplikácie
Potom môžete spustiť program kirigami-hello pomocou:
kirigami-hello # Na Linuxe, manuálne
kde-builder --run kirigami-hello # S kde-builder
kdesrc-build --run --exec kirigami-hello kirigami-tutorial # S kdesrc-build
kirigami-hello.exe # Na WindowsVoilà! Teraz uvidíte vašu úplne prvú aplikáciu Kirigami priamo pred vašimi očami.

Na spustenie novej QML aplikácie v mobilnom režime môžete použiť QT_QUICK_CONTROLS_MOBILE=1:
QT_QUICK_CONTROLS_MOBILE=1 kirigami-helloAk ste skompilovali projekt manuálne pomocou CMake a z nejakého dôvodu by ste chceli projekt odinštalovať, môžete spustiť:
cmake --build build/ --target uninstallPoznámka
Nabudúce, keď budete chcieť vytvoriť potrebné súbory a priečinky, môžete použiť KAppTemplate alebo KDevelop na automatické vygenerovanie vhodného projektu na začiatok. Sú dostupné z repozitárov každej hlavnej distribúcie. Tieto aplikácie tiež vygenerujú súbory obsahujúce metadáta AppStream a súbor .desktop, ktorý obsahuje informácie o tom, ako by sa mala aplikácia zobrazovať v spúšťači aplikácií Linux.
Vďaka kúzlu CMakeLists môžete tiež použiť IDE ako KDevelop alebo QtCreator na vývoj tejto aplikácie v pohodlnom prostredí s minimálnym úsilím.