Qt - klasa QObject oraz sloty i sygnały
Stronę tą wyświetlono już: 4361 razy
Wszystkie klasy biblioteki Qt dziedziczą po klasie bazowej QObject. Klasa ta zapewnia obsługę elementów biblioteki Qt jakimi są sloty i sygnały, które umożliwiają realizację obsługi interakcji pomiędzy obiektami dziedziczącymi po klasie QObject.
Sloty można porównać do gniazdka, natomiast sygnały do wtyczki. Pod dany slot (wtyczkę) można podpiąć sygnał (gniazdko). Ważne jest jednak, aby slot i sygnał do siebie pasowały tak jak dana wtyczka musi pasować do gniazdka.
Podłączenie slotu do sygnału wygląda następująco:
W powyższym kodzie sender jest wskaźnikiem na obiekt wysyłający sygnał. Obiekt ten ma zaimplementowany wewnątrz slot o nazwie onEvent. Z kolei reciver jest wskaźnikiem na obiekt otrzymujący sygnał. Ten obiekt ma zaimplementowany wewnątrz sygnał o nazwie reciveEvent. Aby dany sygnał pasował do danego slotu argumenty, jakie one otrzymują muszą być takie same.
Możliwa jest również operacja odwrotna do połączenia slotu z sygnałem:
Czas najwyższy by utworzyć przykład klasy, która będzie miała zaimplementowany slot i sygnały. W tym celu należy kliknąć prawym przyciskiem myszy (tak jak to jest widoczne na poniższym rysunku) i w menu kontekstowym kliknąć pozycję Dodaj nowy.
Po tym jakże trudnym zadaniu oczom twym ukazać powinno się okno dialogowe Nowy plik, w którym to niezwłocznie po zaznaczeniu opcji z poniższego screen-a należy kliknąć przycisk Wybierz (co też i ja uczyniłem z najdzikszą rozkoszą).
W kolejnym oknie należy podać nazwę tworzonej klasy, ja wybrałem niezbyt wyszukaną nazwę: A po czym kliknąłem przycisk Dalej.
Niestety Qt Creator okazuje się być niezwykle gadatliwym tworem, gada i gada i gęba mu się nie zamyka i z tego powodu w ostatnim widoku okna Klasa C++ pyta się, pod który projekt utworzoną klasę podpiąć. W tym przypadku wypada zostawić tak jak jest i kliknąć przycisk Zakończ.
Uff, po tym jakże nużącym procesie klikania i skakania po oknach Qt Creator-a do projektu powinny zostać dodane dwa pliki:
- A.h;
- A.cpp;
W pliku A.h kod klasy A należy zmodyfikować do następującej postaci:
Natomiast plik A.cpp należy zmodyfikować do następującej postaci:
W pliku main.cpp kod powinien wyglądać mniej więcej tak:
Wynik działania powyższego kodu:
"a2" recived some message from: "a1" and this message is: "Hey, what are you doing here?" "a1" recived some message from: "a2" and this message is: "I spend some time on programming dude!"
Tytuł:
C++ Zbiór zadań z rozwiązaniami
Autor:
Tomasz Jaśniewski
Tytuł:
Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++
Autor:
Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla
Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski
Tytuł:
Wprowadzenie do C++
Autor:
Michał Matlak
Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz
Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha
Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams
Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis
Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół
Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz