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 ++.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Podczas tworzenia przycisku rejestrujesz instancję klasy MyClickHandler dla przycisku.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
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:
- 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.