V C++ je programování grafického uživatelského rozhraní (GUI) důležité při vývoji moderních aplikací, kde mají uživatelé k dispozici pěknou grafiku, se kterou mohou pracovat. Ačkoli C++ je běžně spojeno se systémovým programováním a psaním her, může být vynikající alternativou k psaní GUI. V tomto článku probereme programování GUI v C++, některé oblíbené knihovny GUI pro C++ a jak vytvořit základní GUI aplikaci v C++.
Předpoklady: Základy C++, C++ OOP, Některé knihovny GUI.
Co je GUI (grafické uživatelské rozhraní)?
Grafické uživatelské rozhraní (GUI) je vizuální aplikační rozhraní, které je poskytováno pomocí grafiky, jako jsou okna, textová pole a tlačítka, pomocí kterých mohou uživatelé komunikovat se softwarem. GUI nabízí interaktivní a snadno použitelnou platformu ve srovnání s rozhraním příkazového řádku (CLI), protože uživatelé mohou používat myš nebo jiná vstupní zařízení, jako je dotyková obrazovka atd., aniž by se spoléhali pouze na klávesnici.
Hlavní koncepty programování GUI
Grafické uživatelské rozhraní (GUI) zahrnuje navrhování oken, dialogů, tlačítek atd., což jsou všechny komponenty interaktivního uživatelského rozhraní. Poté tyto widgety ovládáme pomocí obslužných programů událostí, jako je onClick, onHover atd.
Hlavní koncepty programování GUI jsou:
Widgety
Grafické uživatelské rozhraní (GUI) se skládá z widgetů. Patří sem například tlačítka, textová pole, štítky atd. Vlastnosti a chování každého widgetu lze přizpůsobit podle specifických potřeb aplikace. V knihovně GUI jsou obecně následující widgety:
- Okno: Rám okna nejvyšší úrovně, který uvnitř sebe hostí další widgety.
- Knoflík: Tlačítko, na které lze kliknout a jehož kliknutí je spojeno s nějakou událostí.
- Označení: Jednoduchý text pouze pro čtení
- Zaškrtávací políčko : Pole poskytující možnosti zapnutí nebo vypnutí.
- Přepínač: Pole, které poskytuje možnosti zapnutí nebo vypnutí, ale můžeme vybrat pouze jeden přepínač ve skupině.
- Rozbalovací/rozbalovací seznam : Po kliknutí se otevře rozbalovací nabídka. V neotevřeném formuláři lze zobrazit pouze jednu položku.
- Textové pole: Editovatelná textová oblast.
- Seznam: Krabice s více položkami a posuvníkem pro procházení všemi.
- Posuvník: Navigační widget používaný k pohybu po aplikaci.
- Jídelní lístek: Nabídka zobrazená nahoře poskytuje uživateli aplikace různé možnosti.
- Dialogové okno: Pole, které se zobrazí v horní části okna. Někdy pro zobrazení upozornění.
- Mřížka: Používá se pro správu rozložení uživatelského rozhraní.
Správa rozložení
GUI aplikace musí být optimalizovány pro různé obrazovky různých velikostí, rozlišení atd., což se snaží udržet atraktivní, ale efektivní uživatelské rozhraní s různými widgety organizovanými na obrazovce.
Zpracování událostí
V programování GUI jsou události jako kliknutí na tlačítka nebo stisknutí kláves kritické. Tyto události zpracovává aplikace, aby mohla sledovat akce uživatele. S různými widgety jsou spojeny různé události. Například u tlačítka, na které lze kliknout, jsou přidružené události:
- Klikněte na Událost
- Událost pohybu myši
- Zaměření v události
- Zaměřte se na událost
Oblíbené knihovny GUI pro C++
C++ má mnoho na platformě nezávislých GUI knihoven, které lze použít k vývoji GUI aplikace. Některé z populárních jsou:
- gtkmm
- Qt
- wxWidgets
- Milý ImuGui
Příklad aplikace C++ GUI
Pro níže uvedené programy budeme používat následující nástroje:
- Knihovna Qt : Knihovna GUI pro náš program.
- Qt Designer: Interaktivní návrhář šablon GUI pro Qt.
- Qt Creator: IDE pro Qt GUI aplikace
Nyní se podíváme na skutečné případy programování GUI v C++ a Qt. Vyvineme základní aplikaci Hello World, tlačítko a po kliknutí na tlačítko se objeví dialogové okno s textem Hello World. Implementujeme jej pomocí těchto kroků:
Krok 1: Vytvoření projektu Qt
Otevřeme Qt Creator a vytvoříme nový projekt typu Qt Widget Application. Zadejte jméno, vyberte umístění a můžete vyrazit. Tvůrce Qt vytvoří projekt se všemi požadovanými soubory.

Krok 2: Návrh okna
Poté soubor otevřeme mainWindow.ui . Tento soubor obsahuje uživatelské rozhraní aplikace. Přidáme jeden textový štítek pomocí návrháře, který se právě otevřel.
Nyní budou naše soubory obsahovat následující kód:
mainWindow.h
C++
rovnost řetězců v Javě
#ifndef MAINWINDOW_H> #define MAINWINDOW_H> > #include> > QT_BEGIN_NAMESPACE> namespace> Ui {>class> MainWindow; }> QT_END_NAMESPACE> > class> MainWindow :>public> QMainWindow> {> >Q_OBJECT> > public>:> >MainWindow(QWidget *parent = nullptr);> >~MainWindow();> > private>:> >Ui::MainWindow *ui;> };> #endif // MAINWINDOW_H> |
>
>
main.cpp
C++
#include 'mainwindow.h'> > #include> > int> main(>int> argc,>char> *argv[])> {> >QApplication a(argc, argv);> >MainWindow w;> >w.show();> >return> a.exec();> }> |
>
>
mainWindow.cpp
C++
co je mapa java
#include 'mainwindow.h'> #include './ui_mainwindow.h'> > MainWindow::MainWindow(QWidget *parent)> >: QMainWindow(parent)> >, ui(>new> Ui::MainWindow)> {> >ui->setupUi(>this>);> }> > MainWindow::~MainWindow()> {> >delete> ui;> }> |
>
>
mainWindow.ui
XML
xml version='1.0' encoding='UTF-8'?> |
>
>
Všimněte si, že mainWindow.ui je napsán v XML. Je to proto, že Qt zapisuje své soubory uživatelského rozhraní v XML.
Krok 4: Sestavte a spusťte
Můžeme sestavit a spustit projekt Qt v Qt Creator pomocí jediného kliknutí.
Výstup

Výhody GUI aplikací
GUI aplikace nabízí několik výhod, které přispívají k lepší uživatelské zkušenosti a efektivnějšímu vývoji:
- Uživatelsky přívětivé rozhraní: Použití grafických uživatelských rozhraní (GUI) poskytuje jednoduchý a snadno použitelný přístup k softwarovým aplikacím ve srovnání s jinými přístupy, které by zabraly více času.
- Vylepšená interaktivita: Zahrnuje interaktivní funkce, jako jsou tlačítka, rozevírací nabídky, zaškrtávací políčko a posuvník, které uživatelům poskytují moc nad jejich zkušenostmi.
- Kompatibilita napříč platformami: Jazyky jako Qt umožňují tvorbu GUI aplikací pro Windows, macOS, Linux s C++.
- Rychlé prototypování: Přítomnost mnoha GUI builderů a návrhářských nástrojů v GUI frameworkech podporuje rychlé prototypování rozhraní, čímž je celý vývojový proces rychlejší.