I C++ er programmering med grafisk brukergrensesnitt (GUI) viktig i moderne applikasjonsutvikling der brukerne har fin grafikk å jobbe med. Selv om C++ ofte er knyttet til systemprogrammering og spillskriving, kan det være et utmerket alternativ til GUI-skriving. I denne artikkelen vil vi diskutere GUI-programmering i C++, noen populære GUI-biblioteker for C++, og hvordan du lager en grunnleggende GUI-applikasjon i C++.
Forutsetninger: Grunnleggende om C++, C++ OOPs, noe GUI-bibliotek.
Hva er GUI (Graphical User Interface)?
Det grafiske brukergrensesnittet (GUI) er et visuelt applikasjonsgrensesnitt som leveres ved hjelp av grafikk som vinduer, tekstbokser og knapper der brukere kan kommunisere med programvaren. GUI tilbyr en interaktiv og brukervennlig plattform sammenlignet med kommandolinjegrensesnittet (CLI) ettersom brukere kan bruke musen eller andre inndataenheter som en berøringsskjerm osv. uten å bare stole på tastaturet.
Hovedkonsepter for GUI-programmering
Et grafisk brukergrensesnitt (GUI) innebærer å designe vinduer, dialogbokser, knapper osv. som alle er interaktive brukergrensesnittkomponenter. Deretter kontrollerer vi disse widgetene ved å bruke hendelsesbehandlere som onClick, onHover, etc.
Hovedkonseptene for GUI-programmering er:
Widgets
Et grafisk brukergrensesnitt (GUI) består av widgets. Disse inkluderer for eksempel knapper, tekstbokser, etiketter osv. Egenskaper og virkemåter for hver widget kan tilpasses i samsvar med de spesifikke behovene til en applikasjon. Det er vanligvis følgende widgets i et GUI-bibliotek:
- Vindu: En vindusramme på toppnivå som er vert for andre widgets i seg selv.
- Knapp: En klikkbar knapp som har en hendelse knyttet til klikket.
- Merkelapp: Enkel skrivebeskyttet tekst
- Avmerkingsboks : Boks som gir muligheter for å være på eller av.
- Radioknapp: Boks som gir alternativer for å være på eller av, men vi kan bare velge én alternativknapp i en gruppe.
- Dropdown-/kombiboks : Åpner en rullegardinmeny når du klikker. Bare ett element kan vises i det ikke-åpnede skjemaet.
- Tekstboks: Redigerbart tekstområde.
- Listeboks: Boksen med flere elementer og en rullefelt for å gå gjennom dem alle.
- Skyveknapp: En navigasjonswidget som brukes til å flytte rundt i applikasjonen.
- Meny: Vist øverst gir menyen forskjellige alternativer for applikasjonsbrukeren.
- Dialogboks: En boks som vises øverst i et vindu. Noen ganger for å vise varselet.
- Nett: Brukes til Layout Management av brukergrensesnittet.
Oppsettstyring
GUI-applikasjonene må optimaliseres for forskjellige skjermer av forskjellige størrelser, oppløsninger osv. som søker å holde et attraktivt, men effektivt brukergrensesnitt med de forskjellige widgetene organisert på skjermen.
Begivenhetshåndtering
I GUI-programmering er hendelser som knappeklikk eller tastetrykk kritiske. Disse hendelsene håndteres av appen slik at den kan følge brukerhandlingene. Det er forskjellige hendelser knyttet til forskjellige widgets. For eksempel, for en klikkbar knapp, er de tilknyttede hendelsene:
- Klikk på Hendelse
- Mouse Move Event
- Fokus i hendelsen
- Fokus Ut-hendelse
Populære GUI-biblioteker for C++
C++ har mange plattformuavhengige GUI-biblioteker som kan brukes til å utvikle en GUI-applikasjon. Noen av de populære er:
- gtkmm
- Qt
- wxWidgets
- Kjære ImuGui
Eksempel på C++ GUI-applikasjon
Vi vil bruke følgende verktøy for programmene nedenfor:
- Qt bibliotek : GUI-biblioteket for programmet vårt.
- Qt Designer: En interaktiv GUI-maldesigner for Qt.
- Qt Creator: IDE for Qt GUI-applikasjoner
Nå skal vi se på reelle tilfeller for GUI-programmering med C++ og Qt. Vi skal utvikle en grunnleggende Hello World-applikasjon en knapp, og når knappen klikkes, vil en dialogboks vises med Hello World-tekst skrevet på den. Vi vil implementere det ved å bruke disse trinnene:
Trinn 1: Opprette et Qt-prosjekt
Vi vil åpne Qt Creator og lage et nytt prosjekt av typen Qt Widget Application. Skriv inn navnet, velg plasseringen og du er klar. Qt-skaperen vil lage prosjektet med alle nødvendige filer.

arraylist og linkedlist
Trinn 2: Designe vinduet
Vi vil da åpne filen mainWindow.ui . Denne filen inneholder brukergrensesnittet til applikasjonen. Vi legger til én tekstetikett ved hjelp av designeren som nettopp åpnet.
Nå vil filene våre inneholde følgende kode:
mainWindow.h
C++
linux operativsystem
#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 tuppel sortert
xml version='1.0' encoding='UTF-8'?> |
>
>
Legg merke til at mainWindow.ui er skrevet i XML. Det er fordi Qt skriver UI-filene i XML.
Trinn 4: Bygg og kjør
Vi kan bygge og kjøre Qt-prosjektet i Qt Creator med et enkelt klikk.
Produksjon

Fordeler med GUI-applikasjoner
GUI-applikasjoner tilbyr flere fordeler, som bidrar til en bedre brukeropplevelse og strømlinjeformet utvikling:
- Brukervennlig grensesnitt: Bruken av grafiske brukergrensesnitt (GUIer) gir en enkel og brukervennlig tilnærming til programvareapplikasjoner sammenlignet med andre tilnærminger som vil ta mer tid.
- Forbedret interaktivitet: Den omfatter interaktive funksjoner som knapper, rullegardinmenyer, avmerkingsboks og glidebryter som gir brukerne makt over opplevelsene sine.
- Kompatibilitet på tvers av plattformer: Språkene som Qt muliggjør opprettelse av GUI-applikasjoner for Windows, macOS, Linux med C++.
- Hurtig prototyping: Tilstedeværelsen av mange GUI-byggere og designverktøy i GUI-rammeverk fremmer rask prototyping av grensesnitt, noe som gjør hele utviklingsprosessen raskere.