====== Qt Framework ====== **Qt** je objektově orientovaný framework napsaný v jazyce **C++**. Jeho hlavní devízou je heslo: //"Write once, compile anywhere."// Umožňuje vývojářům používat jeden zdrojový kód pro aplikace běžící na Windows, Linuxu, macOS, Androidu, iOS i v embedded systémech. ===== Hlavní technologie Qt ===== Qt se skládá z několika klíčových modulů a technologií: * **Qt Widgets:** Tradiční způsob tvorby rozhraní pomocí C++. Ideální pro desktopové aplikace s komplexními ovládacími prvky. * **Qt Quick & QML:** Moderní, deklarativní jazyk (podobný JSON/JavaScriptu) pro tvorbu plynulých, animovaných rozhraní, která jsou optimalizovaná pro dotykové displeje. * **Signals and Slots:** Unikátní mechanismus pro bezpečnou komunikaci mezi objekty. Nahrazuje složité callback funkce. * **Qt Meta-Object System:** Rozšíření C++, které přidává reflexi, introspekci a dynamickou práci s vlastnostmi objektů. ===== Vývojové nástroje ===== Vývoj v Qt se obvykle opírá o integrované prostředí (IDE): * **Qt Creator:** Rychlé a lehké IDE navržené přímo pro Qt. Obsahuje vizuální návrhář rozhraní (Qt Designer). * **Qt Design Studio:** Nástroj pro designéry, který umožňuje importovat grafiku z Figmy nebo Photoshopu a transformovat ji přímo do kódu QML. ===== Srovnání: Qt vs. GTK ===== Qt je často srovnáván s [[gtk|GTK]], ale jejich filozofie se liší: ^ Vlastnost ^ Qt ^ GTK ^ | **Jazyk** | Nativně C++, vazby pro Python (PySide/PyQt). | Nativně C, objektovost přes GObject. | | **Rozsah** | Celý ekosystém (včetně kontejnerů, sítě). | Zaměřeno primárně na GUI (zbytek řeší GLib). | | **Licence** | Komerční nebo Open Source (GPL/LGPL). | Open Source (LGPL). | | **Vzhled** | Emuluje nativní vzhled každého systému. | Má svůj specifický styl (vychází z GNOME). | ===== Qt a Python (PySide vs. PyQt) ===== Qt je velmi populární i v komunitě Pythonu. Existují dvě hlavní knihovny: 1. **PySide (Qt for Python):** Oficiální projekt od tvůrců Qt (The Qt Company). 2. **PyQt:** Starší, velmi stabilní knihovna vyvíjená společností Riverbank Computing. ===== Příklad kódu (C++) ===== Jednoduché okno s tlačítkem využívající signály a sloty: #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Klikni na mě"); // Propojení signálu (kliknutí) se slotem (ukončení aplikace) QObject::connect(&button, &QPushButton::clicked, &app, &QApplication::quit); button.show(); return app.exec(); } --- > **Víte, že?** Na frameworku Qt je postaveno celé desktopové prostředí **KDE Plasma**, ale také aplikace jako **VLC Media Player**, **Telegram**, **Autodesk Maya** nebo palubní systémy ve vozech **Tesla**. //Související: [[gtk]], [[C++]], [[Linux]], [[https://www.qt.io|Oficiální web Qt]]//