logo

Introduktion til GUI-programmering i C++

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:

  1. Vindue: En vinduesramme på øverste niveau, der er vært for andre widgets inde i sig selv.
  2. Knap: En klikbar knap, der har en begivenhed forbundet med sit klik.
  3. Etiket: Simpel skrivebeskyttet tekst
  4. Afkrydsningsfelt : Boks, der giver mulighed for at være tændt eller slukket.
  5. 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.
  6. Dropdown/Combo Box : Åbner en rullemenu, når der klikkes på den. Kun ét element kan vises i den ikke-åbnede formular.
  7. Tekstboks: Redigerbart tekstområde.
  8. Listeboks: Boksen med flere elementer og en rullepanel til at gennemgå dem alle.
  9. Skyder: En navigationswidget, der bruges til at flytte rundt i applikationen.
  10. Menu: Vist øverst giver menuen forskellige muligheder for applikationsbrugeren.
  11. Dialog boks: En boks, der vises øverst i et vindue. Nogle gange for at vise meddelelsen.
  12. 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:



  1. Klik på Begivenhed
  2. Mouse Move Event
  3. Fokus i begivenheden
  4. 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:

  1. gtkmm
  2. Qt
  3. wxWidgets
  4. Kære ImuGui

Eksempel på C++ GUI-applikation

Vi vil bruge følgende værktøjer til nedenstående programmer:

  1. Qt bibliotek : GUI-biblioteket for vores program.
  2. Qt Designer: En interaktiv GUI-skabelondesigner til Qt.
  3. 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.

skabende-projekt

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'?> MainWindowclass> 0x>0y>800 bredde>600højde> rect> ejendom> MainWindows-streng> ejendom> 260x>140 år>81 bredde>71højde> rect> ejendom> Hej Worldstring> ejendom> widget> widget> 0x>0y>800 bredde>22height> rect> ejendom> widget>widget> ui>>

>

>

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

Hej Verden

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.