Vytvoření grafického rozhraní pomocí Qt. Metodika pro vývoj aplikací pomocí formulářů Vytvoření grafického rozhraní v C

Ahoj všichni. Ve svých předchozích lekcích jsem hovořil o vytváření konzolových aplikací v prostředí Borland C ++ Builder. Počínaje tímto tutoriálem se naučíme C ++ pomocí příkladu grafických aplikací. Kdo se chce naučit vytvářet konzoly. Může si přečíst knihu „Umění psaní konzolových aplikací C ++“. Naše první aplikace bude program, který vygeneruje náhodné číslo. Otevíráme borlandiau, jen nevytvářejte konzolovou aplikaci. Po spuštění se na obrazovce zobrazí následující formulář:

V horní části bude panel nástrojů:

Vpravo je inspektor objektů a seznam formulářů:

Komponenty (na rozdíl od BASIC) jsou již rozděleny do záložek. Podle názvu není těžké uhodnout, jaký typ součástí je umístěn na kartě. Otevřete standardní záložku a umístěte součásti na formulář jako já:

Tlačítko bude označeno jako Button1. Je třeba to změnit. V levém dolním okně Borlandu jsou uvedeny vlastnosti komponent; musí být změněny na naše:

Změňte tlačítko Titulky na Generovat

Změňte vlastnost Titulek Label1 na Číslo

V Edit1 jednoduše vymažeme vlastnost Text (text v samotném jídle).

Po těchto manipulacích bude formulář vypadat jako můj:

Skončili jsme s vizuálním stylem, mimochodem, většina vlastností v borletu vypadá jako basic nebo delfín. Experimentujte s nimi.

Nyní pojďme mluvit o událostech. Každá součást má události, obsahuje kód, který bude spuštěn při splnění určitých podmínek. Například u tlačítka se kód v události Click spustí, když na něj klikneme atd.

Dnes použijeme pouze událost Click. Dvakrát klikněte na tlačítko a přejděte do okna kódu:

Automaticky vytvořeno Klikněte na událost pro tlačítko. Kód, stejně jako konzolová aplikace, je umístěn mezi složenými závorkami. Píšeme kód:

Void __fastcall TForm1 :: Button1Click (TObject * Sender) (double aaa; // Sem vložíme číslo generované procesorem String count; // Napište stejné číslo, ale zmenšené na řetězec randomize; // To je nutné, aby čísla se neopakují aaa = náhodné (34) * 43646; // vygenerování libovolného počtu čísel = FloatToStr (aaa); // převede číslo na řetězec pomocí funkce FloatToString Edit1-> text = count; // zobrazí řetězec proměnná v textovém okně)

Algoritmus je jednoduchý, deklarujeme proměnnou pro ukládání zlomkového čísla a proměnnou pro číslo ve formě řetězce. Faktem je, že okamžitě vygenerované chilso nelze odeslat do textového pole (dojde k chybě. Byl očekáván text a bylo přijato číslo), proto pomocí funkce FloatToStr převedeme číslo do řetězce a vyvedeme jej do textové okno. Pro výstup odkazujeme (pomocí znaku -> (podobně jako bod ve vb)) na vlastnost textu Edit1 a zobrazíme tam text. To je prozatím vše.

Mimochodem, otázka pro vyplnění: kdo se rychleji rozmnožuje počítačové viryČíňané nebo králíci?


Komentáře ()

Vitay

artyomka

"randomize; // Je to nutné, aby se čísla neopakovala." Pořád mám stejná opakování. co dělat?

Andrey

Existují 2 možnosti 1 použití „randomize ();“ nebo v řádku 6 zkomplikovat funkci např. přidejte další a počet sekund

Andrey

„sekundy“ nebo výsledek sečtení dvou pseudonáhodných čísel dělených sekundami - čím více faktorů, tím je číslo nepředvídatelnější

artyomka Alexey (alex13sh)

randomizovat
to proto, aby se čísla neopakovala, když je program zapnutý
tak to je. zapnete program, několikrát stisknete tlačítko
1)5
2)47
3)86
to jsem já v celých číslech
Pokud program vypnete a znovu zapnete při sériovém stisknutí tlačítka, budou stejná čísla ze stejných sekvencí
toto je bez randomizace a nic takového nebude

A co se takto opakuje
1)3
2)69
3)1
4)3
5)8
6)1
TOTO NEPOUŽÍVÁ k náhodnému výběru
aby se tomu vyhnul, Andrey již odpověděl))

Begzod

V počítači mám vizuální síť C ++. Nemohu pro to najít učebnice, zdroje. Pomozte pzhs.

Ali05

V knihkupectví „Nikita Kultin Fundamentals of Programming in Microsoft Visual C ++ 2010“ jsem viděl návod na Visual C ++. Net, ukazuje, jak vytvářet grafické aplikace pod Windows (WinForms).

Kulkhacker Nintendo

Zajímalo by mě, jaká je jeho „špatnost“?

Kulkhacker

Při absenci schopnosti správně předložit materiál a zvyknout si, pánové, na špatný styl programování, a la názvy proměnných / funkcí s přepisem.

Edwarde Kulkhacker

Ministerstvo školství a vědy Ruské federace

Federální státní rozpočtová vzdělávací instituce

vyšší odborné vzdělání

„STAVOVÝ OLEJ UFA

TECHNICKÁ UNIVERZITA “

Katedra počítačové vědy a technické kybernetiky

Vytvořte aplikaci GUI v aplikaci Microsoft Visual Studio 2010

Studijní průvodce

pro laboratorní a praktické školení

se studenty směru

230100 (09.03.01) „Informatika a počítačové inženýrství“

Učební pomůcka obsahuje teoretické informace, úkoly pro praktické a laboratorní práce v kurzu "Programování".

Manuál je určen učitelům oboru a studentům směru: 230100 „Informatika a výpočetní technika“.

Sestavili: Gabdullina A.A., čl. učitel katedry. VTIK

Druzhinskaya E.V., čl. učitel katedry. VTIK

Recenzent: Filippov V.N., kandidát technických věd, docent katedry. VTIK.

1. Teoretické informace 4

1.1. Základní pojmy 4

1.2. Představujeme aplikaci Windows Form v Microsoft Visual Studio 2010 4

1.3. Ovládací prvek formuláře 7

1.5. Funkce MessageBox 9

1.6. Ovládací prvek TextBox 10

2. Praktický úkol. Představujeme aplikaci Windows Form v aplikaci Microsoft Visual Studio 2010 12

2.1. Rámec hodnocení provedené práce 12

2.2. Praktický pracovní příkaz 12

3. Laboratorní práce. Vývoj aplikací v aplikaci Microsoft Visual Studio 2010 16

3.1. Laboratorní objednávka 16

3.2. Úkol 1. Tabulkování funkce a výpočet jejích hodnot v zadaném intervalu se zadaným krokem 16

3.3. Individuální úkoly 19

3.4. Úkol 2. Zpracování dvourozměrná pole 21

3.5. Individuální úkoly 27

  1. Teoretické informace

  1. 1.1. Základní pojmy

Automatizaci informačních procesů v současné době představuje především vývoj softwarové aplikace s grafickým uživatelským rozhraním (GUI), která řídí toky dat.

Grafické uživatelské rozhraní (GUI) je systém prostředků pro interakci mezi uživatelem a zařízením, založený na prezentaci všech systémových objektů a funkcí dostupných uživateli ve formě komponent grafické obrazovky (okna, tlačítka, posuvníky, atd.).

Prvky rozhraní v GUI jsou nejčastěji implementovány na základě metafor a odrážejí jejich účel a vlastnosti, což netrénovaným uživatelům usnadňuje porozumění a zvládnutí programů. Práce uživatele se tedy provádí pomocí obrazovkových formulářů obsahujících ovládací objekty a panely nástrojů s akčními tlačítky pro zpracování.

Standardní grafické uživatelské rozhraní musí splňovat řadu požadavků:

Udržovat informační technologie práce uživatele se softwarovým produktem;

Zaměřte se na koncového uživatele, který s programem komunikuje na vnější úrovni interakce;

Uspokojte princip „šesti“, když do jednoho panelu nabídek není zahrnuto více než 6 konceptů, z nichž každý neobsahuje více než 6 možností;

    zachovat standardizovaný účel grafických objektů a pokud možno jejich umístění na obrazovce.

V objektově orientovaném programování se zabýváme třídami a objekty. Objekty jsou složené datové typy: kombinují více hodnot do jednoho modulu a umožňují nám tyto hodnoty zapisovat a ukládat podle názvu. Jinými slovy, objekt je neuspořádaná kolekce vlastností, každá s názvem a hodnotou. Pojmenované hodnoty obsažené v objektu mohou být buď primitivní typy, jako jsou čísla nebo řetězce, nebo jiné objekty.

Při vývoji aplikací, které nejsou konzoly, je základním konceptem Form.

Formulář je kontejner pro umístění ovládacích prvků vývojového prostředí.

Vlastnosti - možnost přístupu k informacím uloženým v tomto prvku.

Metody jsou sadou akcí, které může objekt provádět.

Událost je akce rozpoznaná objektem (například kliknutí myší, stisknutí klávesy), pro kterou lze naprogramovat odpověď, tj. reakce objektu na událost, která nastala.

5

Vytvořil jsem mnoho různých sekcí systému GUI pro Nintendo DS, jako jsou tlačítka a textová pole a zaškrtávací políčka, ale potřebuji způsob, jak tyto třídy skrýt v jedné třídě Gui, abych mohl na obrazovku kreslit vše najednou a kontrolovat všechna tlačítka najednou a zkontrolujte, zda nejsou některá tlačítka stisknuta. Moje otázka zní jak nejlepší způsob uspořádat všechny třídy (jako tlačítka a textová pole) do jedné třídy GUI?

Zde je jeden způsob, jak jsem si myslel, ale nezdá se to správné:

Upravit: Používám C ++.

Class Gui (public: void update_all (); void draw_all () const; int add_button (Button * button); // Returns button id void remove_button (int button_id); private: Button * buttons; int num_buttons;)

Tento kód má několik problémů, ale jen jsem vám chtěl dát představu o tom, co chci.

  • 5 odpovědí
  • Třídění:

    Aktivita

2

Tato otázka je velmi podobná té, kterou jsem se chystal zveřejnit, pouze moje je pro programování Sony PSP.

Chvíli jsem něco hledal, konzultoval jsem nějaké knihy a VTM a zatím je to hrubý nápad jednoduché systémy ui.

Třída uiElement () (... virtual void Update () = 0; virtual void Draw () = 0; ...) class uiButton () public: uiElement (... virtual void Update (); virtual void Draw () ; ...) třída uiTextbox () public: uiElement (... virtual void Update (); virtual void Draw (); ...) ... // Other ui Elements třída uiWindow () (... void Update (); void Draw (); void AddElement (uiElement * Element); void RemoveElement (uiElement * Element); std :: list Elementy; ...) neplatné uiWindow :: Update () (... pro (seznam :: iterator it = Elements.begin (); it! = Elements.end (); it ++) it-> Update (); ...) neplatné uiWindow :: Draw () (... pro (seznam :: iterator it = Elements.begin (); it! = Elements.end (); it ++) it-> Draw (); ...)

Princple je vytvořit okno a ataktické prvky uživatelské rozhraní a zavolejte metody vykreslování a aktualizace z odpovídajících základních funkcí.

Zatím mi nic nefunguje, protože mám problémy s kreslícím kódem. S různými API na PC a PSP procházím obalový kód pro OpenGL a psp gu.

Snad to pomůže.

0

Jednou užitečnou strategií, kterou je třeba mít na paměti, může být kompozitní vzor. Na nízké úrovni vám to umožní snadněji zpracovávat všechny objekty GUI (a kolekce objektů) po jejich vytvoření. Ale nevím, co to má společného s návrhem GUI, takže jedno místo, kde hledat obecnou inspiraci, je ve zdrojovém kódu stávajícího projektu. WxWidgets je multiplatformní grafické uživatelské rozhraní s dostupným zdrojovým kódem. Hodně štěstí s vaším projektem!

0

3

Pro ty, kteří mají zájem, zde je můj open source, BSD-licencovaný GUI toolkit pro DS:

Odpověď 2k je docela dobrá, ale vážně bych doporučil mít kód obsahující prvky podřízené rozhraní v základní třídě uiElement. Toto je vzor, ​​kterým jsem se u Whoopsi řídil.

jestli ty ne Podpořte to v základní třídě, při pokusu o implementaci čehokoli složitějšího, než je textové pole a tlačítko, narazíte na vážné problémy. Například:

  • Tabulkové podokna lze modelovat jako více tlačítek seskupených do jednoho nadřazeného prvku uživatelského rozhraní, které zajišťuje vzájemnou exkluzivitu;
  • Skupiny rozhlasových stanic (v průběhu času);
  • Posuvníky lze znázornit jako prvek posuvníku / žlabu a tlačítka nahoru / dolů;
  • Posouvací seznamy lze prezentovat jako kontejner a více prvků uživatelského rozhraní.

Také je třeba si uvědomit, že DS má 66MHz procesor a 4 MB RAM, které slouží k uložení i spuštění programu (disky DS se před spuštěním načtou do RAM). Měli byste to opravdu považovat za integrovaný systém, což znamená, že neexistuje STL. Odstranil jsem STL z Woopsi a podařilo se mi zachovat 0,5 MB. Podle standardů pro stolní počítače nic moc, ale je to 1/8 celkové dostupné paměti DS spotřebované odpadky STL.

Podrobně jsem popsal celý proces psaní uživatelského rozhraní na svém blogu:

Obsahuje popis dvou algoritmů, které jsem vytvořil pro překreslování obrazovky, což je složitá část při vytváření GUI (jeden rozbije obdélníky a pamatuje si viditelné oblasti a druhý používá stromy BSP, které jsou mnohem efektivnější a srozumitelnější), tipy pro optimalizaci atd. d.

V tomto článku se zaměříme na vytváření nejjednodušších aplikací pomocí formulářů v C ++. Chci to hned vyjasnit: vývoj „formulářových“ C ++ aplikací bude probíhat v prostředí Microsoft Visual Studio (obejdeme hlavního konkurenta z Borland Software). Stojí za zmínku, že v aplikaci Visual Studio existují dva způsoby, jak vytvořit aplikaci pomocí formulářů, rozhodnutí je učiněno v době vytvoření nového projektu.

První je použít Windows Forms, který implementuje grafické uživatelské rozhraní a je součástí Microsoft .NET Framework. Tento přístup zjednodušuje přístup k prvkům rozhraní Microsoft Windows zabalením rozhraní Win32 API do spravovaného kódu. Pokud své myšlenky uvedete do srozumitelnější formy, pak je tento přístup velmi podobný budování konzolové aplikace, ale trochu komplikovanější, protože používá formuláře.

Druhý způsob je založen na použití knihovny Microsoft Foundation Classes (MFC), která se stará o stavbu kostry aplikace. Na rozdíl od prvního používá MFC po vybalení vzor MVC (Model-View-Cont roller). Tento přístup je složitější než první, ale na jeho základě můžete snadno vytvořit rámec pro velmi zajímavé aplikace, například textový editor nebo použijte komponentu Ribbon a vytvořte nabídku jako v notoricky známém MS Office 2010.

Vytvoření aplikace v MS Visual Studio

Pojďme vytvořit novou aplikaci: Soubor-> Nový-> Projekt. V okně, které se zobrazí, jako na obrázku výše, najděte a vyberte Windows Forms Application, poté zadejte název (app1) a umístění nového projektu a potvrďte jeho vytvoření kliknutím na tlačítko „OK“.

Než přejdete přímo k programování, měli byste pochopit, co je událost. Událost je akce, ke které dochází za určitých podmínek. Za nejjednodušší (a nejběžnější a) lze považovat Načíst, kliknout ... zvažme některé z nich podrobněji:

  • Aktivováno - událost, která nastane, když je aktivován prvek.
  • Kliknutí - nastane, když na prvek kliknete jediným kliknutím.
  • DoubleClick - dvojklik na prvek.
  • HelpRequested - spustí se při stisknutí klávesy .
  • Malování - Vyvolá se, když je prvek přemalován.
  • MouseLeave - událost se spustí, když kurzor opustí hranice prvku.

Nezapomeňte, že události vlastní prvku závisí na jeho typu. Chcete -li zobrazit všechny dostupné formuláře událostí pro objekt, vyberte jej a v okně vlastností vyberte ikonu blesku. Níže jsou uvedeny některé události pro prvek Form1. Jak vidíte, pro událost Load je vybrána funkce Form1_Load, proto se při načtení formuláře zavolá kód obsažený v této funkci.

Otevřete soubor Form1.h, bude existovat kód takto:

Soukromé: System :: Void Form1_Load (System :: Object ^ sender, System :: EventArgs ^ e) ()

Je to stejná funkce Form1_Load, která se spustí při načtení formuláře. Podívejme se na to přidáním komponenty TextBox do formuláře.

Chcete -li to provést, otevřete prostředek formuláře a vyberte jej. Dále vyberte panel nástrojů Toolbox a přetáhněte komponentu TextBox do formuláře. Upravte funkci Form1_Load následujícím způsobem:

Soukromé: System :: Void Form1_Load (System :: Object ^ sender, System :: EventArgs ^ e) (textBox1-> Text = "Hello, World!"; // textBox1 is the name of the box text you added)

Spusťte projekt, měli byste skončit s následující zprávou:

To je prozatím vše, pokračovalo se v dalších lekcích.

Dobrý den! V tomto kurzu vytvoříme vaši první GUI aplikaci v MS Visual Studio. Půjde o jakési „Hello World“ pro grafické aplikace. Hned to řeknu pomocí oken Formuláře - ne jediná možnost vytváření grafických aplikací (GUI aplikace) pro C # programátory, ale toto je nejlepší místo, kde začít. A tak spusťte Visual Studio.

Začali jste to? Pak k věci! Přejdeme do hlavní nabídky a vybereme položku „Soubor - Nový - Projekt“, jak ukazuje obrázek níže.

V zobrazeném okně:

  • na levé straně vyberte „Šablony - Visual C # - Windows“;
  • v hlavní oblasti vyberte prvek " Windows aplikace Formuláře ";
  • ve spodní části okna zadejte název projektu a označte jeho umístění na disku.

Obecně, jak ukazuje obrázek níže.

Naznačili jste, co potřebujete? Poté klikněte na tlačítko „OK“. Nyní byste měli vidět něco jako následující (hlavní oblasti jsou zvýrazněny obdélníky):

Na obrázku výše jsem nastínil hlavní oblasti: oblast návrháře (vlevo nahoře), oblast průzkumníka řešení (vpravo nahoře) a oblast vlastností (vpravo dole). To jsou oblasti, se kterými budeme nejčastěji pracovat.

V oblasti návrháře je nyní prázdná „forma“, toto je takzvané okno, in tento případ, hlavní okno našeho programu. V oblasti vlastností se zobrazí vlastnosti prvku vybraného v návrháři, v tomto případě náš formulář a oblast průzkumníka řešení obsahuje soubory projektu, včetně těch, které souvisejí s formuláři (okny) programu. Pojďme nyní trochu změnit náš formulář a spustit tuto první aplikaci.

Chcete-li to provést, vyberte formulář v návrháři (za tímto účelem jednoduše klikněte levým tlačítkem myši na formulář) a přejděte do bloku vlastností, ve kterém najdeme řádek „Text“ (slovo text, hledáme v levý sloupec), jak ukazuje obrázek níže.

Vlastnost „Text“ hlavní formy aplikace

Upozorňujeme, že levý sloupec obsahuje název (název nemovitosti) a pravý sloupec obsahuje jeho hodnotu.

V tomto případě máme co do činění s textovou vlastností a její hodnota je zobrazena v nadpisu okna, takže zde nyní určíme něco vlastního, například něco jako: „Hlavní okno“, jak je znázorněno na obrázku níže:

Nyní můžete projekt sestavit a spustit. Chcete -li to provést, přejděte do hlavní nabídky a vyberte položku „Build - Build Solution“. A poté spustíme aplikaci, k tomu vybereme v hlavní nabídce položku „Ladit - spustit bez ladění“. V důsledku toho byste měli vidět následující okno.

V další lekci se podíváme na jednoduchou práci s návrhářem formulářů a nastavení prvků grafického rozhraní a tato lekce skončila, vytvořili jsme první grafická aplikace, shromáždili a spustili.