V C++ je programovanie grafického používateľského rozhrania (GUI) dôležité pri vývoji moderných aplikácií, kde majú používatelia k dispozícii peknú grafiku, s ktorou môžu pracovať. Aj keď sa C++ bežne spája so systémovým programovaním a písaním hier, môže byť vynikajúcou alternatívou k písaniu GUI. V tomto článku sa budeme zaoberať programovaním GUI v C++, niektorými populárnymi GUI knižnicami pre C++ a ako vytvoriť základnú GUI aplikáciu v C++.
Predpoklady: Základy C++, C++ OOP, Niektoré knižnice GUI.
Čo je GUI (grafické používateľské rozhranie)?
Grafické používateľské rozhranie (GUI) je vizuálne aplikačné rozhranie, ktoré sa poskytuje pomocou grafiky, ako sú okná, textové polia a tlačidlá, prostredníctvom ktorých môžu používatelia komunikovať so softvérom. GUI ponúka interaktívnu a ľahko použiteľnú platformu v porovnaní s rozhraním príkazového riadka (CLI), pretože používatelia môžu používať myš alebo iné vstupné zariadenia, ako je dotyková obrazovka atď. bez toho, aby sa spoliehali iba na klávesnicu.
Hlavné koncepty programovania GUI
Grafické používateľské rozhranie (GUI) zahŕňa navrhovanie okien, dialógov, tlačidiel atď., čo sú všetky komponenty interaktívneho používateľského rozhrania. Potom tieto widgety ovládame pomocou obslužných programov udalostí, ako sú onClick, onHover atď.
Hlavné koncepty programovania GUI sú:
Miniaplikácie
Grafické používateľské rozhranie (GUI) sa skladá z miniaplikácií. Patria sem napríklad tlačidlá, textové polia, štítky atď. Vlastnosti a správanie každého widgetu je možné prispôsobiť podľa špecifických potrieb aplikácie. Vo všeobecnosti sú v knižnici GUI nasledujúce widgety:
- okno: Rám okna najvyššej úrovne, ktorý obsahuje ďalšie miniaplikácie.
- Tlačidlo: Tlačidlo, na ktoré sa dá kliknúť, s ktorým je spojená nejaká udalosť.
- Označenie: Jednoduchý text len na čítanie
- začiarkavacie políčko : Políčko, ktoré poskytuje možnosti zapnutia alebo vypnutia.
- Tlačítko na Rádiu: Pole, ktoré poskytuje možnosti zapnutia alebo vypnutia, ale môžeme vybrať iba jeden prepínač v skupine.
- Rozbaľovací/rozbaľovací zoznam : Po kliknutí sa otvorí rozbaľovacia ponuka. V neotvorenom formulári môže byť zobrazená iba jedna položka.
- Textové pole: Upraviteľná textová oblasť.
- Zoznam: Krabica s viacerými položkami a posúvačom na prechádzanie všetkými.
- Posúvač: Navigačný widget používaný na pohyb v aplikácii.
- Ponuka: Ponuka zobrazená v hornej časti poskytuje používateľovi aplikácie rôzne možnosti.
- Dialógové okno: Pole, ktoré sa zobrazuje v hornej časti okna. Niekedy na zobrazenie upozornenia.
- Mriežka: Používa sa na správu rozloženia používateľského rozhrania.
Správa rozloženia
GUI aplikácie musia byť optimalizované pre rôzne obrazovky rôznych veľkostí, rozlíšení atď., čo sa snaží zachovať atraktívne, ale efektívne používateľské rozhranie s rôznymi widgetmi usporiadanými na obrazovke.
Spracovanie udalostí
Pri programovaní GUI sú udalosti ako kliknutia na tlačidlá alebo stlačenia klávesov kritické. Tieto udalosti spracováva aplikácia, aby mohla nasledovať akcie používateľa. S rôznymi miniaplikáciami sú spojené rôzne udalosti. Napríklad pre klikateľné tlačidlo sú pridružené udalosti:
- Kliknite na Udalosť
- Udalosť pohybu myši
- Zamerajte sa na udalosti
- Zamerajte sa na udalosť
Populárne knižnice GUI pre C++
C++ má veľa knižníc GUI nezávislých na platforme, ktoré možno použiť na vývoj aplikácie GUI. Niektoré z populárnych sú:
- gtkmm
- Qt
- wxWidgets
- Vážený ImuGui
Príklad aplikácie C++ GUI
Pre nižšie uvedené programy budeme používať nasledujúce nástroje:
- Knižnica Qt : Knižnica GUI pre náš program.
- Qt Designer: Interaktívny návrhár šablón GUI pre Qt.
- Qt Creator: IDE pre aplikácie Qt GUI
Teraz sa pozrieme na skutočné prípady programovania GUI v C++ a Qt. Vyvinieme základnú aplikáciu Hello World, tlačidlo a po kliknutí na tlačidlo sa zobrazí dialógové okno s napísaným textom Hello World. Implementujeme ho pomocou týchto krokov:
Krok 1: Vytvorenie projektu Qt
Otvoríme Qt Creator a vytvoríme nový projekt typu Qt Widget Application. Zadajte meno, vyberte miesto a môžete ísť. Tvorca Qt vytvorí projekt so všetkými požadovanými súbormi.

Krok 2: Návrh okna
Potom otvoríme súbor mainWindow.ui . Tento súbor obsahuje používateľské rozhranie aplikácie. Pridáme jeden textový štítok pomocou návrhára, ktorý sa práve otvoril.
Teraz budú naše súbory obsahovať nasledujúci kód:
mainWindow.h
C++
avl stromy
#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++
#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šimnite si, že mainWindow.ui je napísaný v XML. Je to preto, že Qt zapisuje svoje súbory používateľského rozhrania v XML.
Krok 4: Zostavte a spustite
Projekt Qt môžeme vytvoriť a spustiť v nástroji Qt Creator jediným kliknutím.
Výkon

Výhody GUI aplikácií
Aplikácie GUI ponúkajú niekoľko výhod, ktoré prispievajú k lepšej používateľskej skúsenosti a zjednodušenému vývoju:
- Užívateľsky prívetivé rozhranie: Použitie grafických používateľských rozhraní (GUI) poskytuje jednoduchý a ľahko použiteľný prístup k softvérovým aplikáciám v porovnaní s inými prístupmi, ktoré by si vyžadovali viac času.
- Vylepšená interaktivita: Zahŕňa interaktívne funkcie, ako sú tlačidlá, rozbaľovacie ponuky, začiarkavacie políčka a posúvače, ktoré používateľom poskytujú moc nad ich skúsenosťami.
- Kompatibilita medzi platformami: Jazyky ako Qt umožňujú vytváranie GUI aplikácií pre Windows, macOS, Linux s C++.
- Rapídne prototypovanie: Prítomnosť mnohých GUI builderov a návrhových nástrojov v GUI frameworkoch podporuje rýchle prototypovanie rozhraní, vďaka čomu je celý vývojový proces rýchlejší.