I C++ er programmering med grafisk brugergrænseflade (GUI) vigtig i moderne applikationsudvikling, hvor brugerne har flot grafik at arbejde med. Selvom C++ almindeligvis er forbundet med systemprogrammering og spilskrivning, kan det være et glimrende alternativ til GUI-skrivning. I denne artikel vil vi diskutere GUI-programmering i C++, nogle populære GUI-biblioteker til C++, og hvordan man opretter en grundlæggende GUI-applikation i C++.
Forudsætninger: Fundamentals of C++, C++ OOPs, Some GUI Library.
Hvad er GUI (Graphical User Interface)?
Den grafiske brugergrænseflade (GUI) er en visuel applikationsgrænseflade, der leveres ved hjælp af grafik som vinduer, tekstbokse og knapper, hvorigennem brugere kan kommunikere med softwaren. GUI tilbyder en interaktiv og brugervenlig platform sammenlignet med Command Line Interface (CLI), da brugere kan bruge musen eller andre inputenheder såsom en berøringsskærm osv. uden kun at stole på tastaturet.
Hovedkoncepter for GUI-programmering
En grafisk brugergrænseflade (GUI) involverer design af vinduer, dialogbokse, knapper osv., som alle er interaktive brugergrænsefladekomponenter. Så styrer vi disse widgets ved hjælp af hændelseshandlere som onClick, onHover osv.
Hovedkoncepterne for GUI-programmering er:
Widgets
En grafisk brugergrænseflade (GUI) består af widgets. Disse omfatter f.eks. knapper, tekstbokse, etiketter osv. Egenskaber og adfærd for hver widget kan tilpasses i overensstemmelse med en applikations specifikke behov. Der er generelt følgende widgets i et GUI-bibliotek:
- Vindue: En vinduesramme på øverste niveau, der er vært for andre widgets inde i sig selv.
- Knap: En klikbar knap, der har en begivenhed forbundet med sit klik.
- Etiket: Simpel skrivebeskyttet tekst
- Afkrydsningsfelt : Boks, der giver mulighed for at være tændt eller slukket.
- Radio knap: Boks, der giver mulighed for at være tændt eller slukket, men vi kan kun vælge én alternativknap i en gruppe.
- Dropdown/Combo Box : Åbner en rullemenu, når der klikkes på den. Kun ét element kan vises i den ikke-åbnede formular.
- Tekstboks: Redigerbart tekstområde.
- Listeboks: Boksen med flere elementer og en rullepanel til at gennemgå dem alle.
- Skyder: En navigationswidget, der bruges til at flytte rundt i applikationen.
- Menu: Vist øverst giver menuen forskellige muligheder for applikationsbrugeren.
- Dialog boks: En boks, der vises øverst i et vindue. Nogle gange for at vise meddelelsen.
- Gitter: Bruges til layoutstyring af brugergrænsefladen.
Layoutstyring
GUI-applikationerne skal optimeres til forskellige skærme i forskellige størrelser, opløsninger osv., som søger at holde en attraktiv, men effektiv brugergrænseflade med de forskellige widgets organiseret på skærmen.
Begivenhedshåndtering
I GUI-programmering er begivenheder som knapklik eller tastetryk kritiske. Disse hændelser håndteres af appen, så den kan følge brugerens handlinger. Der er forskellige begivenheder forbundet med forskellige widgets. For eksempel, for en klikbar knap, er de tilknyttede begivenheder:
- Klik på Begivenhed
- Mouse Move Event
- Fokus i begivenheden
- Fokus ud begivenhed
Populære GUI-biblioteker til C++
C++ har mange platformsuafhængige GUI-biblioteker, der kan bruges til at udvikle en GUI-applikation. Nogle af de populære er:
- gtkmm
- Qt
- wxWidgets
- Kære ImuGui
Eksempel på C++ GUI-applikation
Vi vil bruge følgende værktøjer til nedenstående programmer:
- Qt bibliotek : GUI-biblioteket for vores program.
- Qt Designer: En interaktiv GUI-skabelondesigner til Qt.
- Qt Creator: IDE til Qt GUI-applikationer
Nu vil vi se på rigtige tilfælde for GUI-programmering med C++ og Qt. Vi skal udvikle en grundlæggende Hello World-applikation en knap, og når der klikkes på knappen, vises en dialogboks med Hello World-tekst skrevet på den. Vi implementerer det ved hjælp af disse trin:
Trin 1: Oprettelse af et Qt-projekt
Vi åbner Qt Creator og laver et nyt projekt af typen Qt Widget Application. Indtast navnet, vælg lokationen, og du er klar til at gå. Qt-skaberen vil oprette projektet med alle de nødvendige filer.

gem youtube video vlc
Trin 2: Design af vinduet
Så åbner vi filen mainWindow.ui . Denne fil indeholder applikationens brugergrænseflade. Vi tilføjer én tekstetiket ved hjælp af den designer, der lige er åbnet.
Nu vil vores filer indeholde følgende kode:
mainWindow.h
C++
svævende css
#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
python tuple sorteret
xml version='1.0' encoding='UTF-8'?> |
>
>
Bemærk, at mainWindow.ui er skrevet i XML. Det er fordi Qt skriver sine UI-filer i XML.
Trin 4: Byg og kør
Vi kan bygge og køre Qt-projektet i Qt Creator ved hjælp af et enkelt klik.
Produktion

Fordele ved GUI-applikationer
GUI-applikationer tilbyder flere fordele, der bidrager til en bedre brugeroplevelse og strømlinet udvikling:
- Brugervenlig grænseflade: Brugen af grafiske brugergrænseflader (GUI'er) giver en enkel og letanvendelig tilgang til softwareapplikationer sammenlignet med andre tilgange, der ville tage længere tid.
- Forbedret interaktivitet: Den omfatter interaktive funktioner som knapper, rullemenuer, afkrydsningsfelt og skyder, der giver brugerne magt over deres oplevelser.
- Kompatibilitet på tværs af platforme: Sprogene som Qt muliggør oprettelse af GUI-applikationer til Windows, macOS, Linux med C++.
- Hurtig prototyping: Tilstedeværelsen af mange GUI-byggere og designværktøjer i GUI-frameworks fremmer hurtig prototyping af grænseflader, hvilket gør hele udviklingsprocessen hurtigere.