Czy ktoś może wyjaśnić, jak działa GUI i kiedy powinienem zacząć z niego korzystać? [Zamknięte]
16
Uczę się C ++ już od około miesiąca i zanim przejdę dalej, chciałbym wyjaśnić to żmudne pytanie, które wciąż mam. Wiem, co to jest GUI, ale tak naprawdę nie wiem, jak to działa, a może przykłady popularnych?
Chociaż wiem, że programowanie w wierszu poleceń to podstawa, myślę, że fajnie byłoby bawić się w GUI.
Chociaż mam około 3 milionów innych pytań, uratuję je: D
ostatnia linia sprawiła, że się uśmiechnąłem :) +1 za to
CyprUS
Odpowiedzi:
28
Uogólniam na kilka bibliotek GUI, ale na bardzo wysokim poziomie najważniejszą koncepcją, którą musisz zrozumieć, jest to, że GUI jest sterowane zdarzeniami .
W aplikacji konsolowej dane wejściowe użytkownika zwykle mają miejsce w określonych punktach. Pytasz użytkownika, czekasz na jego dane wejściowe, obliczasz coś na podstawie tych danych wejściowych. Jedną z głównych różnic jest to, że wprowadzanie odbywa się tylko w jednym miejscu, czytasz tekst z wiersza poleceń ( stdinw C ++).
W aplikacji GUI zazwyczaj masz wiele miejsc, w których może się wprowadzać dane, na przykład przyciski wykonujące różne działania lub pola tekstowe. To tutaj pojawiają się wydarzenia. Na przykład kliknięcie przycisku wywołuje zdarzenie. To zdarzenie musi być obsługiwane przez procedurę obsługi zdarzenia , która zwykle jest tylko metodą, która pobiera obiekt zdarzenia i jest wywoływana, gdy takie parzyste zostanie wyzwolone. Skąd Twój przycisk wie o module obsługi zdarzeń? Zwykle subskrybujesz (lub słuchasz ).
Oto przykład „inspirowany C ++”, nie jest to rzeczywisty kod QT ani C ++.
classMyClickHandler:publicClickListener{void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");}};
Podczas tworzenia przycisku rejestrujesz instancję klasy MyClickHandler dla przycisku.
Teraz za każdym razem, gdy przycisk bzostanie kliknięty, pojawia się okno komunikatu z komunikatem „Kliknięto przycisk Zapisz”.
Możesz sobie wyobrazić, że aplikacja GUI ma dwa etapy:
Ustanowienie GUI: krótki okres przy starcie, w którym wszystkie obiekty są tworzone i łączone ze sobą.
Pętla wydarzenie : Twój GUI jest w jeden wielki pętli while i jest po prostu siedzi tam na biegu jałowym, aż zostanie wywołane zdarzenie.
Jest to bardzo prosty przykład, ale zalecałbym, niezależnie od tego, jakie ramy wybierzesz, spróbuj wyświetlić okno komunikatu po kliknięciu przycisku.
W przypadku frameworka jest ich wiele: w przypadku C ++ prawdopodobnie poleciłbym Qt.
Ostatnia rada: trzymaj się z dala od projektantów GUI, dopóki nie dowiesz się, co dzieje się w tle. Nie jest tak trudno napisać kilka prostych przykładów i najpierw zrozumieć pętlę zdarzeń, a następnie przejść do bardziej złożonych układów.
Jeśli dodasz średnik na końcu definicji klasy i upublicznisz dziedziczenie, będzie to właściwa / możliwa składnia C ++.
Lstor
1
Gotowy. Ale nie chciałem wzbudzać żadnych fałszywych oczekiwań, ponieważ kod w końcu nie będzie działał. Większość moich doświadczeń dotyczy Swinga, co prawdopodobnie odzwierciedla nazwy klas. Te same pojęcia będą nazywane inaczej w różnych ramach.
sebastiangeiger
1
+1 To wydaje się jedyną odpowiedzią, która odpowiada na pytanie (wydaje mi się, że nie pyta on tylko o frameworki, pyta o ogólne koncepcje)
Federico klez Culloca
1
Ewwww .... brzydkie badziewie.
DeadMG
7
Teraz jest jak najlepszy czas na naukę programowania w GUI. Jak znasz C ++, polecam przyjrzeć się QT. Świetna dokumentacja, ogromna baza użytkowników i wiele przykładów / samouczków dostępnych do nauki.
+1 dla Qt - @David - Qt ma własne środowisko programistyczne o nazwie Qt Creator, które jest niezależne, wolne i stosunkowo proste w porównaniu do innych. Qt jest potężny, intuicyjny, rozbudowany, bardzo dobrze udokumentowany i posiada dużą i aktywną bazę użytkowników. Łatwo jest zacząć i istnieje wiele przykładów, z którymi możesz zacząć grać i robić swoje - to świetny sposób na naukę. Można go pobrać tutaj
Roger Attrill
Mam skłonność do głosowania za tym. QT zachęca do bardzo złych praktyk w C ++, jeśli nie wiesz, na co zwrócić uwagę. - Czego nie robisz po zaledwie miesiącu C ++. Ponadto dotyczy niektórych złożonych aspektów w C ++. Jeśli to możliwe, zacznę od programowania GUI w innym języku i skoncentruję się na poprawnym użyciu C ++.
Konrad Rudolph
3
Możesz także zacząć od Microsoft Visual Studio C ++ Express . IDE jest bardzo przyjazny i łatwy w użyciu (i darmowy!), A będziesz mógł bardzo szybko stworzyć swoje pierwsze aplikacje GUI ... Które pomogą ci skoncentrować się na zrozumieniu podstaw programowania sterowanego zdarzeniami , inne podejście które musisz opanować.
Możesz także zacząć od budowania aplikacji opartych na WPF, ale najpierw zacznę od Windows Forms, czyli o jedną technologię mniej do zrozumienia, ponieważ jest to tylko podstawowy C ++ z Microsoft Windows Forms API.
W VC ++ Express możesz pisać GUI za pomocą: 1. Win32 API, który jest bardzo stary, uciążliwy i po prostu śmieszny 2. MFC, który jest starą kupą bzdur 3. WTL, który jest lepszy, ale nie wieloplatformowy. 4. C ++ / CLI, który jest niepopularny, źle obsługiwany (nawet bez inteligencji) i zbyt skomplikowany. Qt jest łatwiejszy, wieloplatformowy, ma ładny projektant GUI i ma dużą liczbę użytecznych klas innych niż GUI, co jest bardzo ważne w C ++ z jego małą standardową biblioteką.
Anton Barkovsky,
0
Może bardziej nadaje się do StackOverflow, oznaczony jako c ++; ale w każdym razie.
Przejrzyj kilka z nich w Google; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...
GUI nie są trudne w użyciu, zwłaszcza gdy znasz już c ++. Idę z WxWidgets, jak sądzę; Qt jest nieco zbyt skomplikowane, aby można było na niego uczyć się przez miesiąc. Możesz odebrać Wx za kilka godzin.
Użytkownicy nie lubią skomplikowanych rzeczy. Konsola to skomplikowana sprawa, dlatego musisz tworzyć aplikacje GUI, które są bardziej przyjazne i łatwe do zrozumienia. To najbardziej oczywisty powód, jaki widzę. Możesz spojrzeć na gtk lub Qt - te dwa są najbardziej popularne.
Odpowiedzi:
Uogólniam na kilka bibliotek GUI, ale na bardzo wysokim poziomie najważniejszą koncepcją, którą musisz zrozumieć, jest to, że GUI jest sterowane zdarzeniami .
W aplikacji konsolowej dane wejściowe użytkownika zwykle mają miejsce w określonych punktach. Pytasz użytkownika, czekasz na jego dane wejściowe, obliczasz coś na podstawie tych danych wejściowych. Jedną z głównych różnic jest to, że wprowadzanie odbywa się tylko w jednym miejscu, czytasz tekst z wiersza poleceń (
stdin
w C ++).W aplikacji GUI zazwyczaj masz wiele miejsc, w których może się wprowadzać dane, na przykład przyciski wykonujące różne działania lub pola tekstowe. To tutaj pojawiają się wydarzenia. Na przykład kliknięcie przycisku wywołuje zdarzenie. To zdarzenie musi być obsługiwane przez procedurę obsługi zdarzenia , która zwykle jest tylko metodą, która pobiera obiekt zdarzenia i jest wywoływana, gdy takie parzyste zostanie wyzwolone. Skąd Twój przycisk wie o module obsługi zdarzeń? Zwykle subskrybujesz (lub słuchasz ).
Oto przykład „inspirowany C ++”, nie jest to rzeczywisty kod QT ani C ++.
Podczas tworzenia przycisku rejestrujesz instancję klasy MyClickHandler dla przycisku.
Teraz za każdym razem, gdy przycisk
b
zostanie kliknięty, pojawia się okno komunikatu z komunikatem „Kliknięto przycisk Zapisz”.Możesz sobie wyobrazić, że aplikacja GUI ma dwa etapy:
Jest to bardzo prosty przykład, ale zalecałbym, niezależnie od tego, jakie ramy wybierzesz, spróbuj wyświetlić okno komunikatu po kliknięciu przycisku.
W przypadku frameworka jest ich wiele: w przypadku C ++ prawdopodobnie poleciłbym Qt.
Ostatnia rada: trzymaj się z dala od projektantów GUI, dopóki nie dowiesz się, co dzieje się w tle. Nie jest tak trudno napisać kilka prostych przykładów i najpierw zrozumieć pętlę zdarzeń, a następnie przejść do bardziej złożonych układów.
źródło
Teraz jest jak najlepszy czas na naukę programowania w GUI. Jak znasz C ++, polecam przyjrzeć się QT. Świetna dokumentacja, ogromna baza użytkowników i wiele przykładów / samouczków dostępnych do nauki.
źródło
Możesz także zacząć od Microsoft Visual Studio C ++ Express . IDE jest bardzo przyjazny i łatwy w użyciu (i darmowy!), A będziesz mógł bardzo szybko stworzyć swoje pierwsze aplikacje GUI ... Które pomogą ci skoncentrować się na zrozumieniu podstaw programowania sterowanego zdarzeniami , inne podejście które musisz opanować.
Możesz także zacząć od budowania aplikacji opartych na WPF, ale najpierw zacznę od Windows Forms, czyli o jedną technologię mniej do zrozumienia, ponieważ jest to tylko podstawowy C ++ z Microsoft Windows Forms API.
źródło
Może bardziej nadaje się do StackOverflow, oznaczony jako c ++; ale w każdym razie.
Przejrzyj kilka z nich w Google; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...
GUI nie są trudne w użyciu, zwłaszcza gdy znasz już c ++. Idę z WxWidgets, jak sądzę; Qt jest nieco zbyt skomplikowane, aby można było na niego uczyć się przez miesiąc. Możesz odebrać Wx za kilka godzin.
źródło
Użytkownicy nie lubią skomplikowanych rzeczy. Konsola to skomplikowana sprawa, dlatego musisz tworzyć aplikacje GUI, które są bardziej przyjazne i łatwe do zrozumienia. To najbardziej oczywisty powód, jaki widzę. Możesz spojrzeć na gtk lub Qt - te dwa są najbardziej popularne.
źródło