Programovanie v grafickom rozhraní c. Vytvorenie GUI s Qt

Dobrý deň! V tomto návode vytvoríme vašu prvú GUI aplikáciu v MS. vizuálne štúdio. Pôjde o akýsi „Hello World“ pre grafické aplikácie. Hneď to poviem Používanie systému Windows Formuláre nie sú jediným spôsobom, ako môžu programátori v jazyku C# vytvárať grafické aplikácie (aplikácie s grafickým používateľským rozhraním), ale je to dobré miesto, kde sa začať učiť. A tak spúšťame Visual Studio.

Spustené? Potom k biznisu! Prejdeme do hlavnej ponuky a vyberieme položku "Súbor - Nový - Projekt", ako je znázornené na obrázku nižšie.

V zobrazenom okne:

  • na ľavej strane vyberte "Šablóny - Visual C # - Windows";
  • v hlavnej oblasti vyberte prvok "Windows Forms Application";
  • v spodnej časti okna zadajte názov projektu a uveďte jeho umiestnenie na disku.

Vo všeobecnosti, ako je znázornené na obrázku nižšie.

Špecifikovali ste, čo potrebujete? Potom kliknite na tlačidlo "OK". Teraz by ste mali vidieť niečo takéto (hlavné oblasti sú zvýraznené obdĺžnikmi):

Na obrázku vyššie som označil hlavné oblasti: oblasť návrhára (vľavo hore), oblasť prieskumníka riešení (vpravo hore) a oblasť vlastností (vpravo dole). Toto sú oblasti, s ktorými budeme najčastejšie pracovať.

V oblasti návrhárov je teraz prázdny „formulár“, toto je takzvané okno, v tomto prípade hlavné okno nášho programu. Oblasť vlastností zobrazuje vlastnosti prvku vybraného v návrhárovi, v tomto prípade náš formulár, ale oblasť prieskumníka riešení obsahuje súbory projektu vrátane tých, ktoré súvisia s formulármi (oknami) programu. A teraz trochu zmeníme náš formulár a spustíme túto prvú aplikáciu.

Ak to chcete urobiť, vyberte formulár v návrhárovi (na tento účel jednoducho kliknite ľavým tlačidlom myši na formulár) a prejdite do bloku vlastností, v ktorom nájdeme riadok „Text“ (slovo je text, hľadáme v ľavom stĺpci), ako je znázornené na obrázku nižšie.

Vlastnosť "Text" hlavnej formy aplikácie

Upozorňujeme, že ľavý stĺpec zobrazuje názov (názov vlastnosti) a pravý stĺpec zobrazuje jeho hodnotu.

V tomto prípade máme čo do činenia s vlastnosťou textu a jej hodnota je zobrazená v názve okna, takže tam teraz vložme niečo vlastné, napríklad niečo ako: "Hlavné okno", ako je znázornené na obrázku nižšie:

Teraz môžete vytvoriť projekt a spustiť ho. Ak to chcete urobiť, prejdite do hlavnej ponuky a vyberte možnosť "Vytvoriť - vytvoriť riešenie". A potom spustíme aplikáciu, na tento účel v hlavnej ponuke vyberieme položku „Ladenie - Spustiť bez ladenia“. V dôsledku toho by ste mali vidieť nasledujúce okno.

V ďalšej lekcii sa na to pozrieme jednoduchá práca s návrhárom formulárov a nastavením prvkov GUI a táto lekcia sa skončila, vytvorili sme prvú grafickú aplikáciu, postavili ju a spustili.

Ahojte všetci. Vo svojich predchádzajúcich lekciách som hovoril o vytváraní konzolových aplikácií v prostredí Borland C++ Builder. Počnúc touto lekciou sa naučíme C++ pomocou grafických aplikácií ako príkladu. Kto sa chce naučiť vytvárať konzoly. Dokáže prečítať knihu „Umenie vytvárania konzolových aplikácií v C++“. Našou prvou aplikáciou bude program, ktorý zobrazuje náhodné číslo. Otvárame borlandyayu, len nevytvárajte konzolovú aplikáciu. Po spustení sa na obrazovke zobrazí nasledujúci formulár:

V hornej časti bude panel nástrojov:

Vpravo Inšpektor objektov a zoznam formulárov:

Komponenty (na rozdiel od BASICu) sú už rozdelené do kariet. Podľa názvu nie je ťažké uhádnuť, aký typ komponentov je umiestnený na karte. Otvorte štandardnú kartu a umiestnite komponenty do formulára, ako je ten môj:

Tlačidlo bude označené ako Button1. Treba ju zmeniť. V ľavom dolnom okne Borlandu sú zobrazené vlastnosti komponentov, musia byť zmenené na naše:

Tlačidlom Caption (Inscription) zmeňte na Generate

Pre označenie Label1 zmeňte vlastnosť Caption na Number

V Edit1 sa vlastnosť Text (text v samotnej úprave) jednoducho vymaže.

Po týchto manipuláciách bude formulár vyzerať ako môj:

S vizuálnym štýlom sme skončili, mimochodom väčšina vlastností v Borlyade vyzerá ako BASIC alebo Delphi. Experimentujte s nimi.

Teraz hovorme o udalostiach. Každý komponent má udalosti, obsahujú kód, ktorý sa vykoná pri dosiahnutí určitých podmienok. Napríklad pri tlačidle sa kód v udalosti Click spustí, keď naň klikneme atď.

Dnes použijeme iba akciu Click. Dvakrát kliknite na tlačidlo a dostanete sa do okna kódu:

Udalosť Click pre tlačidlo bola vygenerovaná automaticky. Kód, podobne ako konzolová aplikácia, je umiestnený medzi zložené zátvorky. Napíšeme kód:

Void __fastcall TForm1::Button1Click(TObject *Sender) ( double aaa; //Sem vložte číslo vygenerované procesorom Počet reťazcov; //Napíšte rovnaké číslo, ale zredukované na reťazec randomize; //Je to potrebné, aby čísla sa neopakujú aaa=random (34)*43646; //Vygeneruje ľubovoľný počet čísel=FloatToStr (aaa); //Preklad čísla do reťazca pomocou funkcie FloatToString Edit1->Text=count; //Výstup premennej reťazca do textového okna)

Algoritmus je jednoduchý, deklarujeme premennú na uloženie zlomkového čísla a premennú pre číslo vo forme reťazca. Okamžite vygenerované číslo sa totiž nedá zobraziť v textovom poli (vyskytne sa chyba. Očakával sa text a prišlo číslo), takže pomocou funkcie FloatToStr preložíme číslo na reťazec a zobrazíme ho v Textové pole. Pre výstup otočíme (pomocou znamienka -> (podobne ako bodka vo vb)) na vlastnosť Edit1 text a tam text zobrazíme. To je zatiaľ všetko.

Mimochodom, zasypávacia otázka: kto rýchlejšie množí počítačové vírusy, Číňania, alebo králiky?


Komentáre()

Vitay

artyomka

"randomize; //Je to potrebné, aby sa čísla neopakovali." Stále opakujem. čo robiť?

Andrey

Sú 2 možnosti 1-použite "randomize();" alebo v riadku 6 skomplikovať funkciu napr. pridajte ďalšie sekundy

Andrey

„sekundy“ alebo výsledok sčítania dvoch pseudonáhodných čísel delených sekundami – čím viac faktorov, tým je číslo nepredvídateľnejšie

artyomka Alexey (alex13sh)

randomizovať
je to preto, aby sa pri zapnutí programu neopakovali čísla
no, teda. zapnite program, niekoľkokrát stlačte tlačidlo
1)5
2)47
3)86
toto som ja v celých číslach
dobre, ak vypnete program a znova ho zapnete, pri sériovom stlačení tlačidla budú rovnaké čísla s rovnakými postupnosťami
toto je bez randomizácie, ale toto sa neodstráni

A čo sa takto opakuje
1)3
2)69
3)1
4)3
5)8
6)1
TOTO SA NEVZŤAHUJE na randomizáciu
aby som sa tomu vyhol, Andrey už odpovedal))

Begzod

V počítači mám visual c++.net. Nemôžem nájsť učebnice, zdrojové kódy. Pomoc pzhs.

Ali05

V kníhkupectve som videl učebnicu Visual C ++.Net „Nikita Kultin Programming Basics in Microsoft Visual C++ 2010“, len ukazuje, ako vytvoriť grafické aplikácie v systéme Windows (WinForms).

Coolhacker Nintendo

Zaujímalo by ma, čo je jeho "zlé"?

Coolhacker

Pri absencii schopnosti správne prezentovať materiál a zvyknutí vás, páni, na zlý štýl programovania, a la prepísané názvy premenných/funkcií.

Edward Coolhacker

Ministerstvo školstva a vedy Ruskej federácie

Federálna štátna rozpočtová vzdelávacia inštitúcia

vyššie odborné vzdelanie

„Štátna ropa UFA

TECHNICKÁ UNIVERZITA"

Katedra informatiky a inžinierskej kybernetiky

Vytvorenie aplikácie GUI v Microsoft Visual Studio 2010

Učebná pomôcka

pre laboratórne a praktické hodiny

so študentmi smeru

230100 (09.03.01) "Informatika a počítačové inžinierstvo"

Učebná pomôcka poskytuje teoretické informácie, úlohy pre praktickú a laboratórnu prácu predmetu „Programovanie“.

Príručka je určená učiteľom odboru, ako aj študentom smeru: 230100 "Informatika a počítačové inžinierstvo".

Zostavila: Gabdullina A.A., Art. lektor na katedre VTIK

Druzhinskaya E.V., čl. lektor na katedre VTIK

Recenzent: Filippov V.N., Ph.D., docent katedry. VTIK.

1. Teoretické informácie 4

1.1. Základné pojmy 4

1.2. Zoznámenie sa s Windows aplikácia Formulár v Microsoft Visual Studio 2010 4

1.3. Kontrola formulára 7

1.5. Funkcia MessageBox 9

1.6. Ovládanie textového poľa 10

2.Praktická úloha. Úvod do aplikácie Windows Form Application v Microsoft Visual Studio 2010 12

2.1. Štruktúra hodnotenia dokončenej práce 12

2.2. Postup pri vykonávaní praktickej práce 12

3. Laboratórne práce. Vývoj aplikácií v Microsoft Visual Studio 2010 16

3.1. Laboratórny poriadok 16

3.2. Úloha 1. Tabuľka funkcie a výpočet jej hodnôt v zadanom intervale s daným krokom 16

3.3. Jednotlivé úlohy 19

3.4. Úloha 2. Spracovanie dvojrozmerné polia 21

3.5. Jednotlivé úlohy 27

  1. Teoretické informácie

  1. 1.1. Základné pojmy

Automatizáciu informačných procesov v súčasnosti predstavuje predovšetkým vývoj softvérovej aplikácie s grafickým užívateľským rozhraním (GUI), ktorá riadi dátové toky.

Grafické používateľské rozhranie (GUI) je systém prostriedkov na interakciu používateľa so zariadením založený na prezentácii všetkých objektov a funkcií systému dostupných používateľovi vo forme komponentov grafickej obrazovky (okná, tlačidlá, rolovacie lišty atď.).

Najčastejšie sú prvky rozhrania v GUI implementované na základe metafor a zobrazujú ich účel a vlastnosti, čo uľahčuje nepripraveným používateľom pochopenie a zvládnutie programov. Práca používateľa sa teda vykonáva pomocou obrazovkových formulárov obsahujúcich ovládacie objekty a panely nástrojov s tlačidlami akcií na spracovanie.

Štandardné grafické používateľské rozhranie musí spĺňať niekoľko požiadaviek:

Udržiavať informačnú technológiu práce používateľa so softvérovým produktom;

Zamerajte sa na koncového používateľa, ktorý komunikuje s programom na externej úrovni interakcie;

Splňte zásadu „šiestich“, keď v jednej lište ponuky nie je zahrnutých viac ako 6 konceptov, z ktorých každá neobsahuje viac ako 6 možností;

    zachovať štandardizovaný účel grafických objektov a ak je to možné, ich umiestnenie na obrazovke.

V objektovo orientovanom programovaní sa zaoberáme triedami a objektmi. Objekty sú zložené dátové typy: kombinujú viacero hodnôt do jednej jednotky a umožňujú nám zapisovať a ukladať tieto hodnoty podľa názvu. Inými slovami, objekt je neusporiadaná zbierka vlastností, z ktorých každá má názov a hodnotu. Pomenované hodnoty obsiahnuté v objekte môžu byť buď primitívne typy, ako sú čísla alebo reťazce, alebo iné objekty.

Pri vývoji nekonzolových aplikácií je hlavným konceptom Formulár.

Formulár je kontajner na hosťovanie ovládacích prvkov návrhového prostredia.

Vlastnosti - možnosť prístupu k informáciám uloženým v tomto prvku.

Metódy sú súborom akcií, ktoré môže objekt vykonávať.

Udalosť je akcia rozpoznaná objektom (napríklad kliknutie myšou, stlačenie klávesy), na ktorú možno naprogramovať odozvu, t.j. reakcia objektu na udalosť.

Posledná aktualizácia: 26.05.2019

V Xamarin.Forms je vizuálne rozhranie tvorené stránkami. Stránka je objekt triedy Page , zaberá celý priestor na obrazovke. To je to, čo vidíme na obrazovke mobilné zariadenie je stránka. Aplikácia môže mať jednu alebo viac stránok.

Stránka akceptuje jeden z kontajnerov rozloženia ako obsah, ktorý zase obsahuje štandardné vizuálne prvky, ako sú tlačidlá a textové polia, ako aj ďalšie prvky rozloženia.

Zoberme si projekt HelloApp vytvorený v predchádzajúcej téme (alebo vytvorte nový). Štandardne je celé rozhranie vytvorené v triede App, ktorá sa nachádza v súbore App.xaml.cs a predstavuje aktuálnu aplikáciu:

Jeho predvolený kód je:

Používanie systému; pomocou Xamarin.Forms; pomocou Xamarin.Forms.Xaml; menný priestor HelloApp ( verejná čiastočná trieda App: Aplikácia ( public App() ( InitializeComponent(); MainPage = new MainPage(); ) chránené prepísanie void OnStart() ( // Spracovanie pri spustení vašej aplikácie ) chránené prepísanie void OnSleep() ( / / Spracovať, keď vaša aplikácia spí ) chránené prepísanie void OnResume() ( // Spracovať, keď sa vaša aplikácia obnoví )) )

Trieda App začína konštruktorom, kde sa najprv zavolá metóda InitializeComponent(), ktorá inicializuje objekt, a potom sa nastaví vlastnosť MainPage. Prostredníctvom tejto vlastnosti sa nastavuje trieda App domovskej stránke aplikácie. V tomto prípade je definovaná triedou HelloApp.MainPage, čo je trieda definovaná v súboroch MainPage.xaml a MainPage.xaml.cs.

Táto cesta však nie je jediná. Xamarin.Forms vám umožňuje vytvárať vizuálne rozhranie buď pomocou kódu C# alebo deklaratívne pomocou jazyka xaml, podobného html, alebo kombináciou týchto prístupov.

Vytvorenie rozhrania z kódu C#

Do projektu HelloApp pridáme bežnú triedu C#, ktorú nazveme StartPage .

A definujte nasledujúci obsah v tejto triede:

Používanie Xamarin.Forms; menný priestor HelloApp ( trieda StartPage: ContentPage ( public StartPage() ( Hlavička označenia = new Label() ( Text = "Dobrý deň z Xamarin Forms" ); this.Content = hlavička; ) ) )

Táto trieda predstavuje stránku, takže dedí z triedy ContentPage. Konštruktor vytvorí štítok s textom, ktorý sa nastaví ako obsah stránky (this.Content = hlavička).

Na označenie MainPage ako úvodná stránka, zmeňte triedu aplikácie:

Používanie Xamarin.Forms; menný priestor HelloApp ( verejná čiastočná trieda App: Aplikácia ( public App() ( InitializeComponent(); MainPage = new StartPage(); ) chránené prepísanie void OnStart() ( // Spracovanie pri spustení vašej aplikácie ) chránené prepísanie void OnSleep() ( / / Spracovať, keď vaša aplikácia spí ) chránené prepísanie void OnResume() ( // Spracovať, keď sa vaša aplikácia obnoví )) )

Vlastnosť MainPage teraz ukazuje na novovytvorenú StartPage.

Za zmienku tiež stojí, že Visual Studio má pripravenú šablónu na pridávanie nových tried stránok s najjednoduchším kódom. Ak teda chcete pridať novú stránku, musíte pri pridávaní nového prvku vybrať šablónu stránky s obsahom (C#):

Táto trieda je pridaná do hlavného projektu riešenia (v tomto prípade je to HelloApp).

Pridaná trieda stránky bude mať nasledujúci kód:

Používanie systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Reflection.Emit; pomocou System.Text; pomocou Xamarin.Forms; priestor názvov HelloApp ( verejná trieda Stránka1: ContentPage ( verejná Stránka1() ( Obsah = nový StackLayout ( Deti = ( nový štítok ( Text = "Hello Page" ) ) ); ) ) )

Táto trieda bude tiež dediť zo základnej triedy ContentPage a bude mať takmer rovnakú organizáciu ako trieda MainPage vytvorená vyššie.

A tiež v triede aplikácie môžeme túto stránku nastaviť ako úvodnú stránku:

Používanie Xamarin.Forms; menný priestor HelloApp ( verejná čiastočná trieda App: Aplikácia ( public App() ( InitializeComponent(); MainPage = new Page1(); ) //........... ) )

5

Urobil som veľa rôznych sekcií systému Nintendo DS GUI, ako sú tlačidlá a textové polia a začiarkavacie políčka, ale potrebujem spôsob, ako skryť tieto triedy v jednej triede Gui, aby som mohol kresliť všetko na obrazovke naraz a kontrolovať všetky tlačidlá naraz. aby ste skontrolovali, či sú stlačené nejaké tlačidlá. Moja otázka je, aký je najlepší spôsob, ako usporiadať všetky triedy (napríklad tlačidlá a textové polia) do jednej triedy GUI?

Tu je jeden spôsob, ako som si myslel, ale nezdá sa mi to správne:

Upraviť: Používam C++.

Class Gui ( public: void update_all(); void draw_all() const; int add_button(Button *button); // Vráti ID tlačidla void remove_button(int button_id); private: Button *buttons; int num_buttons; )

Tento kód má niekoľko problémov, ale chcel som vám dať predstavu o tom, čo chcem.

  • 5 odpovedí
  • Triedenie:

    Aktivita

2

Táto otázka je veľmi podobná tej, ktorú som sa chystal napísať, len moja je určená na programovanie Sony PSP.

Chvíľu som niečo hľadal, konzultoval som nejaké knihy a VTM a zatiaľ je to približná predstava o jednoduchých systémoch používateľského rozhrania.

Trieda uiElement() ( ... virtual void Update() = 0; virtual void Draw() = 0; ... ) class uiButton() public: uiElement ( ... virtual void Update(); virtual void Draw() ; ... ) class uiTextbox() public: uiElement ( ... virtual void Update(); virtual void Draw(); ... ) ... // Iné prvky ui class uiWindow() ( ... void Update (); void Draw(); void AddElement(uiElement *Element); void RemoveElement(uiElement *Element); std::list prvky; ... ) void uiWindow::Update() ( ... pre (zoznam ::iterátor it = Elements.begin(); it != Elements.end(); it++) it->Aktualizovať(); ... ) void uiWindow::Draw() ( ... pre (zoznam ::iterátor it = Elements.begin(); it != Elements.end(); it++) it->Draw(); ...)

Princípom je vytvorenie okna a attaktových prvkov používateľské rozhranie a zavolajte metódy draw a update z príslušných hlavných funkcií.

Zatiaľ mi nič nefunguje, pretože mám problémy s kódom kreslenia. S rôznymi API na PC a PSP sa pozerám na obalový kód pre OpenGL a psp gu.

Dúfam, že to pomôže.

0

Jednou z užitočných stratégií, ktoré treba mať na pamäti, by mohol byť zložený vzor. Na nízkej úrovni vám môže umožniť jednoduchšie manipulovať so všetkými GUI objektmi (a kolekciami objektov), ​​keď už boli vytvorené. Ale neviem nič, čo by sa týkalo dizajnu GUI, takže jedno miesto, kde možno nájsť všeobecnú inšpiráciu, je v zdrojovom kóde existujúceho projektu. WxWidgets je multiplatformové GUI s prístupným zdrojový kód. Veľa šťastia s vaším projektom!

0

3

Pre záujemcov tu je môj open source, BSD-licencovaný GUI toolkit pre DS:

Odpoveď Subject2k je celkom dobrá, ale vážne by som odporučil mať kód, ktorý obsahuje prvky podriadeného rozhrania v základnej triede uiElement. Toto je ukážka, ktorú som sledoval vo Woopsie.

Ak ty nie Ak to podporíte v základnej triede, narazíte na vážne problémy, keď sa pokúsite implementovať čokoľvek zložitejšie ako textové pole a tlačidlo. Napríklad:

  • Panely tabuľky môžu byť modelované ako viaceré tlačidlá zoskupené pod jedným nadradeným prvkom používateľského rozhrania, ktorý poskytuje vzájomnú exkluzivitu výberu;
  • Skupiny rádií (v priebehu času);
  • Posúvacie lišty môžu byť reprezentované ako posuvný/odkvapový prvok a tlačidlo hore/dole;
  • Rolovacie zoznamy môžu byť reprezentované ako kontajner a niekoľko prvkov používateľského rozhrania.

Tiež je potrebné pripomenúť, že DS má 66 MHz procesor a 4 MB RAM, ktorá sa používa na uloženie vášho programu aj na jeho spustenie (disky DS sa pred spustením načítajú do RAM). Naozaj by ste to mali považovať za vstavaný systém, čo znamená, že neexistuje žiadny STL. Odstránil som STL z Woopsi a podarilo sa mi ušetriť 0,5 MB. Nie je to veľa podľa štandardov pre stolné počítače, ale je to 1/8 celkovej dostupnej pamäte DS spotrebovanej odpadom STL.

Podrobne popisujem celý proces písania používateľského rozhrania na mojom blogu:

Zahŕňa popis dvoch algoritmov, ktoré som vymyslel na prekresľovanie obrazovky, čo je zložitá časť vytvárania GUI (jeden rozdeľuje obdĺžniky a pamätá si viditeľné oblasti a druhý používa stromy BSP, čo je oveľa efektívnejšie a jednoduchšie porozumieť), tipy na optimalizáciu atď. d.



Načítava...
Hore