Konfiguracja sprzętu i oprogramowania

Tworzenie interfejsu graficznego przy użyciu Qt. Tworzenie aplikacji z interfejsem graficznym Jak stworzyć interfejs programu w c

Ostatnia aktualizacja: 26.05.2019

W Xamarin.Forms interfejs wizualny składa się ze stron. Strona jest obiektem klasy Page, zajmuje całą powierzchnię ekranu. To właśnie widzimy na ekranie urządzenie przenośne to strona. Aplikacja może mieć jedną lub więcej stron.

Strona przyjmuje jako zawartość jeden z kontenerów układu, który z kolei zawiera standardowe elementy wizualne, takie jak przyciski i pola tekstowe, a także inne elementy układu.

Weźmy projekt HelloApp utworzony w poprzednim temacie (lub utwórzmy nowy). Domyślnie cały interfejs jest tworzony w klasie App, która znajduje się w pliku App.xaml.cs i reprezentuje bieżącą aplikację:

Jego domyślny kod:

Korzystanie z systemu; przy użyciu platformy Xamarin.Forms; przy użyciu Xamarin.Forms.Xaml; przestrzeń nazw HelloApp (publiczna klasa częściowa App: Application (public App () (InitializeComponent (); MainPage = new MainPage) ();) protected override void OnStart ()) (// uchwyt podczas uruchamiania aplikacji) protected override void OnSleep)) (/ / Obsługuj, gdy aplikacja jest uśpiona) protected override void OnResume() (//Obsługa, gdy aplikacja zostanie wznowiona)))

Klasa App rozpoczyna się od konstruktora, który najpierw wywołuje metodę InitializeComponent (), która inicjuje obiekt, a następnie ustawia właściwość MainPage. Dzięki tej właściwości klasa App ustawia strona główna Aplikacje. W tym przypadku jest ona zdefiniowana przez klasę HelloApp.MainPage, czyli przez klasę zdefiniowaną w plikach MainPage.xaml i MainPage.xaml.cs.

Ale podana ścieżka nie tylko ten. Xamarin. Forms umożliwia tworzenie interfejsu wizualnego zarówno przy użyciu kodu C#, jak i deklaratywnie przy użyciu języka xaml, podobnego do html, lub kombinacji tych podejść.

Tworzenie interfejsu z kodu C#

Dodajmy do projektu HelloApp zwykłą klasę C#, którą nazwiemy StartPage.

I zdefiniuj następującą zawartość w tej klasie:

Korzystanie z platformy Xamarin.Forms; przestrzeń nazw HelloApp (klasa StartPage: ContentPage (publiczny StartPage ()) (Nagłówek etykiety = new Label () (Text = "Hello from Xamarin Forms"); this. Content = header;)))

Ta klasa reprezentuje stronę i dlatego dziedziczy z klasy ContentPage. Konstruktor tworzy etykietę z tekstem, która jest ustawiana jako zawartość strony (this.Content = header).

Aby wyznaczyć MainPage jako Strona startowa, zmieńmy klasę App:

Korzystanie z platformy Xamarin.Forms; przestrzeń nazw HelloApp (publiczna klasa częściowa App: Application (public App () (InitializeComponent (); MainPage = new StartPage);) protected override void OnStart () (// Uchwyt podczas uruchamiania aplikacji) protected override void OnSleep () (/ / Obsługuj, gdy aplikacja jest uśpiona) protected override void OnResume() (//Obsługa, gdy aplikacja zostanie wznowiona)))

Właściwość MainPage wskazuje teraz na nowo utworzoną StartPage.

Warto również zauważyć, że Visual Studio ma gotowy szablon aby dodać nowe klasy strony z najprostszym kodem. Tak więc, aby dodać nową stronę, podczas dodawania nowego elementu wybierz szablon strony treści (C#):

Ta klasa jest dodawana do główny projekt rozwiązania (w tym przypadku HelloApp).

Dodana klasa strony będzie miała następujący kod:

Korzystanie z systemu; za pomocą System.Collections.Generic; za pomocą System.Linq; za pomocą System.Reflection.Emit; za pomocą System.Text; przy użyciu platformy Xamarin.Forms; przestrzeń nazw HelloApp (klasa publiczna Page1: ContentPage (public Page1()) (Content = new StackLayout (Children = (new Label (Text = "Hello Page")));)))

Ta klasa będzie również dziedziczyć z bazowej klasy ContentPage i będzie miała prawie taką samą organizację jak utworzona powyżej klasa MainPage.

A także w klasie aplikacji możemy ustawić tę stronę jako stronę startową:

Korzystanie z platformy Xamarin.Forms; przestrzeń nazw HelloApp (publiczna część klasy App: Application (public App() () (InitializeComponent (); MainPage = new Page1 ();) // ...........))

Ministerstwo Edukacji i Nauki Federacji Rosyjskiej

Federalna Państwowa Budżetowa Instytucja Oświatowa

wyższe wykształcenie zawodowe

„OLEJ W STANIE UFA

UNIWERSYTET TECHNICZNY"

Katedra Informatyki i Inżynierii Cybernetyki

Stwórz graficzną aplikację interfejsu użytkownika w microsoft visual studio 2010

Przewodnik do nauki

na zajęcia laboratoryjne i praktyczne

ze studentami

230100 (09.03.01) "Informatyka i inżynieria komputerowa"

Pomoc dydaktyczna zawiera informacje teoretyczne, zadania do pracy praktycznej i laboratoryjnej kursu „Programowanie”.

Podręcznik skierowany jest do nauczycieli dyscypliny, a także studentów kierunku: 230100 „Informatyka i technika komputerowa”.

Opracował: Gabdullina AA, art. nauczyciel wydziału. VTIK

Druzhinskaya E.V., art. nauczyciel wydziału. VTIK

Recenzent: Filippov V.N., kandydat nauk technicznych, profesor nadzwyczajny katedry. VTIK.

1. Informacje teoretyczne 4

1.1. Podstawowe pojęcia 4

1.2. Przedstawiamy aplikację Windows Form w Microsoft Visual Studio 2010 4

1.3. Kontrola formularza 7

1.5. Funkcja MessageBox 9

1.6. Kontrolka pola tekstowego 10

2. Zadanie praktyczne. Przedstawiamy aplikację Windows Form w Microsoft Visual Studio 2010 12

2.1. Ramy oceny wykonanej pracy 12

2.2. Praktyczne zlecenie pracy 12

3.Praca laboratoryjna. Tworzenie aplikacji w Microsoft Visual Studio 2010 16

3.1. Zlecenie na prace laboratoryjne 16

3.2. Zadanie 1. Tabelowanie funkcji i obliczanie jej wartości w określonym przedziale z określonym krokiem 16

3.3. Zadania indywidualne 19

3.4. Zadanie 2. Przetwarzanie tablic dwuwymiarowych 21

3.5. Zadania indywidualne 27

  1. Informacje teoretyczne

  1. 1.1. Podstawowe koncepcje

Automatyzacja procesów informacyjnych to obecnie przede wszystkim rozwój aplikacji z graficznym interfejsem użytkownika (GUI), który steruje przepływem danych.

Graficzny Interfejs Użytkownika (GUI) to system środków interakcji pomiędzy użytkownikiem a urządzeniem, oparty na prezentacji wszystkich obiektów i funkcji systemu dostępnych dla użytkownika w postaci graficznych elementów ekranu (okna, przyciski, paski przewijania, itp.).

Najczęściej elementy interfejsu w GUI są implementowane w oparciu o metafory i odzwierciedlają ich przeznaczenie i właściwości, co ułatwia nieprzeszkolonym użytkownikom zrozumienie i opanowanie programów. W ten sposób praca użytkownika odbywa się za pomocą masek zawierających obiekty sterujące oraz paski narzędzi z przyciskami akcji do przetwarzania.

Standardowy graficzny interfejs użytkownika musi spełniać szereg wymagań:

Utrzymać technologię informacyjną pracy użytkownika z oprogramowaniem;

Skoncentruj się na użytkowniku końcowym, który komunikuje się z programem na zewnętrznym poziomie interakcji;

Spełnij zasadę „sześciu”, gdy na jednym pasku menu znajduje się nie więcej niż 6 pojęć, z których każdy zawiera nie więcej niż 6 opcji;

    zachować ustandaryzowane przeznaczenie obiektów graficznych i, jeśli to możliwe, ich położenie na ekranie.

W programowaniu obiektowym mamy do czynienia z klasami i obiektami. Obiekty są złożonymi typami danych: łączą wiele wartości w jedną jednostkę i pozwalają nam zapisywać i przechowywać te wartości według nazwy. Innymi słowy, obiekt jest nieuporządkowaną kolekcją właściwości, z których każda ma nazwę i wartość. Nazwane wartości zawarte w obiekcie mogą być albo typami pierwotnymi, takimi jak liczby lub łańcuchy, albo innymi obiektami.

Podczas tworzenia aplikacji niekonsolowych podstawową koncepcją jest Form.

Formularz to kontener do umieszczania kontrolek środowiska programistycznego.

Właściwości - możliwość dostępu do informacji przechowywanych w tym elemencie.

Metody to zestaw działań, które obiekt może wykonać.

Zdarzenie to akcja rozpoznana przez obiekt (np. kliknięcie myszką, naciśnięcie klawisza), na którą można zaprogramować reakcję, czyli reakcja obiektu na zdarzenie, które miało miejsce.

Dobry dzień! W tym samouczku stworzymy Twoją pierwszą aplikację GUI w MS Visual Studio. Będzie to rodzaj „Hello World” dla aplikacji graficznych. Od razu powiem, że za pomocą systemu Windows Formularze nie są jedynym sposobem, w jaki programiści C# mogą tworzyć aplikacje graficzne (graficzny interfejs użytkownika), ale od tego zaczynasz naukę. I tak uruchamiamy Visual Studio.

Zacząłeś to? W takim razie do rzeczy! Przechodzimy do menu głównego i wybieramy pozycję „Plik - Nowy - Projekt”, jak pokazano na poniższym rysunku.

W wyświetlonym oknie:

  • po lewej stronie wybierz „Szablony — Visual C# — Windows”;
  • w głównym obszarze wybierz element " Aplikacja Windows Formularze ”;
  • w dolnej części okna wpisz nazwę projektu i wskaż jego lokalizację na dysku.

Ogólnie, jak pokazano na poniższym obrazku.

Czy wskazałeś, czego potrzebujesz? Następnie kliknij przycisk „OK”. Teraz powinieneś zobaczyć coś takiego (główne obszary są wyróżnione prostokątami):

Na powyższym obrazku nakreśliłem główne obszary: obszar projektanta (u góry po lewej), obszar eksploratora rozwiązań (u góry po prawej) i obszar właściwości (na dole po prawej). Są to obszary, z którymi będziemy pracować najczęściej.

W obszarze projektanta jest teraz pusty "formularz", jest to tzw. okno, w tym przypadku główne okno naszego programu. W obszarze właściwości wyświetlane są właściwości elementu wybranego w designerze, w tym przypadku nasz formularz, a obszar eksploratora rozwiązań zawiera pliki projektu, w tym te związane z formularzami (oknami) programu. Teraz zmieńmy nieco nasz formularz i uruchommy tę pierwszą aplikację.

Aby to zrobić, wybierz formularz w kreatorze (w tym celu wystarczy kliknąć lewym przyciskiem myszy na formularzu) i przejdź do bloku właściwości, w którym znajdziemy wiersz „Tekst” (słowo tekst, którego szukamy w lewej kolumnie), jak pokazano na poniższym rysunku.

Właściwość „Tekst” głównego formularza aplikacji

Należy pamiętać, że lewa kolumna zawiera nazwę (nazwę nieruchomości), a prawa kolumna zawiera jej wartość.

W tym przypadku mamy do czynienia z właściwością tekstową, a jej wartość jest wyświetlana w tytule okna, więc teraz określmy tam coś własnego, na przykład coś takiego: „Okno główne”, jak pokazano na poniższym rysunku:

Teraz możesz zbudować projekt i uruchomić go. Aby to zrobić, przejdź do menu głównego i wybierz element „Buduj - Kompiluj rozwiązanie”. A następnie uruchamiamy aplikację, w tym celu wybieramy pozycję „Debugowanie - Start bez debugowania” w menu głównym. W rezultacie powinieneś zobaczyć następujące okno.

W następnej lekcji przyjrzymy się prosta praca z projektantem formularzy i dostosowywaniem elementów interfejs graficzny i ta lekcja dobiegła końca, stworzyliśmy pierwszą aplikację graficzną, zbudowaliśmy ją i uruchomiliśmy.

5

Stworzyłem wiele różnych sekcji systemu GUI dla Nintendo DS, takich jak przyciski, pola tekstowe i pola wyboru, ale potrzebuję sposobu na ukrycie tych klas w jednej klasie Gui, abym mógł narysować wszystko na ekranie naraz i sprawdzić wszystkie przyciski od razu, aby sprawdzić, czy któryś z przycisków jest wciśnięty. Moje pytanie brzmi, jaki jest najlepszy sposób na zorganizowanie wszystkich klas (takich jak przyciski i pola tekstowe) w jedną klasę GUI?

Oto jeden sposób, który pomyślałem, ale wydaje mi się, że nie jest właściwy:

Edytować: Używam C++.

Class Gui (public: void update_all (); void draw_all () const; int add_button (przycisk *); // Zwraca identyfikator przycisku void remove_button (int button_id); private: Button * buttons; int num_buttons;)

Ten kod ma kilka problemów, ale chciałem tylko dać wyobrażenie o tym, czego chcę.

  • 5 odpowiedzi
  • Sortowanie:

    Czynność

2

To pytanie jest bardzo podobne do tego, które miałem opublikować, tylko moje dotyczy programowania Sony PSP.

Od jakiegoś czasu czegoś szukałem, konsultowałem kilka książek i VTM-ów i na razie jest to zgrubny pomysł proste systemy interfejs użytkownika.

Class 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 (); ...) ... // Inne elementy ui class uiWindow () (... void Update (); void Draw (); void DodajElement (uiElement * Element); void UsuńElement (uiElement * Element); std :: lista Elementy; ...) void uiWindow :: Aktualizuj () (... for (list :: iterator it = Elements.begin (); to! = Elements.end (); it ++) it-> Aktualizuj (); ...) void uiWindow :: Draw () (... for (list :: iterator it = Elements.begin (); to! = Elements.end (); to ++) to-> Rysuj (); ...)

zasadą jest tworzenie elementów okiennych i zaczepianych interfejs użytkownika do niego i wywołaj metody render i update z odpowiednich funkcji podstawowych.

Na razie nic nie działa, bo mam problemy z kodem rysunkowym. Z różnymi interfejsami API na PC i PSP, przechodzę przez kod opakowujący dla OpenGL i psp gu.

Mam nadzieję że to pomoże.

0

Przydatną strategią, o której należy pamiętać, może być wzór złożony. Na niskim poziomie umożliwia łatwiejszą obsługę wszystkich obiektów GUI (i kolekcji obiektów) po ich utworzeniu. Ale nie wiem, co ma wspólnego z projektowaniem GUI, więc jednym z miejsc, w których można znaleźć ogólną inspirację, jest kod źródłowy istniejącego projektu. WxWidgets to wieloplatformowy GUI z dostępnym kod źródłowy... Powodzenia w Twoim projekcie!

0

3

Dla zainteresowanych, oto mój open source, licencjonowany BSD zestaw narzędzi GUI dla DS:

Odpowiedź Subject2k jest całkiem dobra, ale poważnie polecam posiadanie kodu, który zawiera elementy interfejsu potomnego w podstawowej klasie uiElement. To jest wzór, którym podążałem w Whoopsi.

Jeśli ty nie wesprzeć to w klasie bazowej, napotkasz poważne problemy, gdy będziesz próbował zaimplementować coś bardziej złożonego niż pole tekstowe i przycisk. Na przykład:

  • Panele tabelaryczne można modelować jako wiele przycisków zgrupowanych w jeden element nadrzędny interfejs użytkownika zapewniający wzajemną wyłączność wyboru;
  • Grupy stacji radiowych (w czasie);
  • Paski przewijania mogą być reprezentowane jako element suwaka / rynny i przyciski w górę / w dół;
  • Listy przewijane mogą być prezentowane jako kontener i wiele elementów interfejsu użytkownika.

Warto również pamiętać, że DS ma procesor 66 MHz i 4 MB pamięci RAM, która służy zarówno do przechowywania programu, jak i jego uruchamiania (dyski DS są ładowane do pamięci RAM przed uruchomieniem). Naprawdę powinieneś myśleć o tym jako o systemie wbudowanym, co oznacza, że ​​nie ma STL. Usunąłem STL z Woopsi i udało mi się zachować 0,5 MB. Niewiele jak na standardy komputerów stacjonarnych, ale jest to 1/8 całkowitej dostępnej pamięci DS zużywanej przez śmieci STL.

Szczegółowo opisałem cały proces pisania interfejsu użytkownika na moim blogu:

Zawiera opis dwóch algorytmów, które wymyśliłem do przerysowywania ekranu, co jest trudną częścią tworzenia GUI (jeden po prostu rozbija prostokąty i zapamiętuje widoczne obszary, a drugi używa drzew BSP, co jest znacznie bardziej wydajne i łatwiejsze do zrozumienia), wskazówki dotyczące optymalizacji itp. .d.

W tym artykule skupimy się na tworzeniu najprostszych aplikacji z wykorzystaniem formularzy w C++. Chcę od razu wyjaśnić: rozwój aplikacji „formowych” C++ będzie się odbywał w środowisku Microsoft Visual Studio (pominiemy głównego konkurenta firmy Borland Software). Warto zauważyć, że w Visual Studio istnieją dwa sposoby na zrobienie aplikacji z formularzami, decyzja zapada w momencie tworzenia nowego projektu.

Pierwszym z nich jest użycie Windows Forms, który implementuje graficzny interfejs użytkownika i jest częścią Microsoft .NET Framework. Takie podejście upraszcza dostęp do elementów interfejsu Microsoft Windows owijając interfejs Win32 API w kodzie zarządzanym. Jeśli umieścisz swoje myśli w bardziej zrozumiałej formie, to podejście to jest bardzo podobne do budowania aplikacji konsolowej, ale trochę bardziej skomplikowane, ponieważ używa formularzy.

Drugi sposób opiera się na przy użyciu Microsoft Podstawowe klasy (MFC), biblioteka zajmująca się budowaniem szkieletu aplikacji. W przeciwieństwie do pierwszego, po wyjęciu z pudełka MFC wykorzystuje wzór MVC (Model-View-Cont roller). To podejście jest bardziej skomplikowane niż pierwsze, ale na jego podstawie można łatwo stworzyć framework dla bardzo ciekawe aplikacje, np, Edytor tekstu lub użyj komponentu Wstążki i stwórz menu jak w znanym MS Office 2010.

Tworzenie aplikacji w MS Visual Studio

Stwórzmy nową aplikację: Plik-> Nowy-> Projekt. W wyświetlonym oknie, jak na powyższym obrazku, odszukaj i wybierz aplikację Windows Forms, następnie określ nazwę (app1) i lokalizację nowego projektu oraz potwierdź jego utworzenie klikając „OK”.

Zanim przejdziesz bezpośrednio do programowania, powinieneś zrozumieć, czym jest zdarzenie. Zdarzenie to czynność, która ma miejsce w określonych warunkach. Najprostszy (i najczęstszy) można rozważyć Załaduj, kliknij ... przyjrzyjmy się niektórym z nich bardziej szczegółowo:

  • Aktywacja - zdarzenie, które występuje, gdy element jest aktywowany.
  • Kliknięcie - występuje, gdy pojedyncze kliknięcie na element.
  • DoubleClick — podwójne kliknięcie na element.
  • HelpRequested - uruchamia się po naciśnięciu klawisza .
  • Malowanie — podnoszone, gdy element jest przemalowywany.
  • MouseLeave — zdarzenie jest wywoływane, gdy kursor opuści granice elementu.

Nie zapominaj, że zdarzenia związane z elementem zależą od jego rodzaju. Aby wyświetlić wszystkie dostępne formularze zdarzeń dla obiektu, wybierz go i wybierz ikonę błyskawicy w oknie właściwości. Poniżej przedstawiono niektóre zdarzenia dotyczące elementu Form1. Jak widać funkcja Form1_Load jest wybrana dla zdarzenia Load, dlatego kod zawarty w tej funkcji zostanie wywołany podczas ładowania formularza.

Otwórz plik Form1.h, będzie taki kod:

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

Jest to ta sama funkcja Form1_Load, która jest wyzwalana podczas ładowania formularza. Zobaczmy to, dodając do formularza składnik TextBox.

Aby to zrobić, otwórz zasób formularza i wybierz go. Następnie wybierz pasek narzędzi Toolbox i przeciągnij składnik TextBox na formularz. Zmodyfikuj funkcję Form1_Load w następujący sposób:

Private: System :: Void Form1_Load (System :: Object ^ sender, System :: EventArgs ^ e) (textBox1-> Text = "Hello, World!"; // textBox1 to nazwa dodanego tekstu pola)

Uruchom projekt, powinieneś otrzymać następujący komunikat:

To wszystko na razie, ciąg dalszy na kolejnych lekcjach.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
czy było to pomocne?
tak
Nie
Dziekuję za odpowiedź!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Zaznacz to, kliknij Ctrl + Enter i wszystko naprawimy!