Qt - podstawowe cechy Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępiony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem
Rozszerzenia C++ dla Qt Przykład definicji klasy dla C++ class BardzoProstaKlasa { private: int Wartosc; public: BardzoProstaKlasa(); int pobierzwartosc() const { return Wartosc; } void wstawwartosc( int ); }; Przykład definicji klasy dla Qt class BardzoProstaKlasa z Qt : public QObject { Q OBJECT private: int Wartosc; public: BardzoProstaKlasa z Qt(); int pobierzwartosc() const { return Wartosc; } public slots: void wstawwartosc( int ); signals: void zmianawartosci( int ); };
Emisja sygnału void BardzoProstaKlasa::wstawWartosc( int NowaWartosc ) { if ( Wartosc!= NowaWartosc ) emit zmianawartosci( Wartosc = NowaWartosc ); } BardzoProstaKlasa Obiekt A, Obiekt B; connect( &ObiektA, SIGNAL( zmianawartosci(int) ), &ObiektB, SLOT( wstawwartosc(int) ) ); Obiekt B.wstawWartosc( 11 ); // Emisja sygnału do... Obiekt A.wstawWartosc( 79 ); // Emisja sygnału do obiektu B Obiekt B.pobierzWartosc(); // Zamiast 11 jest 79 Obiekt B.wstawWartosc( 11 ); // Emisja sygnału do... Obiekt A.pobierzWartosc(); // Tutaj wciaz jest 79
Konstrukcja typu CALLBACK Przycisk Funkcja Obslugi Zdarzenia Rys. 1. Powiązanie obiektu z jedną funkcją obsługującą zdarzenia dostępne poprzez dany obiekt. Poglaskaj Uderz Uderz mocno Daj spokoj i tak juz mu nic nie pomoze Przycisk Funkcja Obslugi Zdarzenia Rys. 2. Parametry przekazywane wraz ze zdarzeniem pozwalają na jego identyfikacje i właściwy dobór akcji.
Idea tworzenia polaczeń Rys. 1. Każde z istniejących połączeń nie zależy od żadnego innego połączenia. Przycisk Rys. 2. Przesłanie sygnału wiąże się z zainicjowaniem akcji dla obiektu, do którego wysłany został sygnał.
Przeglad podstawowych klas biblioteki Qt KOMPONENTY FINALNE GUI Klasy aplikacji, Kontrolki (Widgets), Dialogi, Zarzadzanie geometria obiektów. KOMPONENTY BAZOWE GUI Kontrolki abstrakcyjne, Klasy operacji rysowania, Klasy czcionek, Jadro, Inne przydatne klasy. KOMPONENTY POMOCNICZE (ang. Utilities) Ogólne klasy narzędzi, Klasy operacji I/O, Klasy operacji na obrazach, Klasy daty i czasu.
Wybrane komponenty finalne KLASY APLIKACJI GUI (Graficznego Interfejsu Użytkownika) QMainWindow : Typowe okno z menu, listwa narzędziową, i listwa statusu, QMenuBar : Horyzontalna listwa menu, QStatusBar : Horyzontalna listwa komunikatow, QToolBar : Listwa narzędziowa, QToolTip : Narzędzia do dymków, QWhatsThis : Narzędzia dla podpowiedzi. KONTROLKI QButtonGroup: Tworzenie grupy klawiszy, QFrame : Bazowa klasa kontrolek, QListBox : Przewijana lista jednokolumnowa, QSlider : Horyzontalne i wertykalne suwaki, DIALOGI QDialog : Bazowa klasa okna dialogowego, QFileDialog : Dialog dla nazwy pliku, QMessageBox : Krótki komunikat i kilka klawiszy, QProgressDialog: Wizualizacja stopnia zaawansowania, ZARZADZANIE GEOMETRIA OBIEKTÓW QBoxLayout : Układa potomne kontrolki w rzędach lub kolumnach, QGridLayout : Układa kontrolki w zadanej kracie,
Wybrane komponenty bazowe KONTROLKI ABSTRAKCYJNE QButton QMenuBar QFrame QTableView QWidget : Bazowa klasa dla przycisku, : Horyzontalna listwa menu, : Klasa bazowa kontrolki z opcjonalna obwodka, : Klasa bazowa dla tabel, : Klasa bazowa wszystkich kontrolek. KLASY OPERACJI RYSOWANIA QBitmap QBrush QPixmap QPainter : Monochromatyczna mapa pikselowa, : Definiuje wzorzec wypełniania, : Mapa pikselowa, : Realizuje właściwe rysowanie KLASY CZCIONEK QFont QFileInfo : Wyznacza czcionkę do rysowania, : Ogólna informacja o czcionce. JADRO QAccel : Obsługa akcelelatorów (skrótów), QApplication: Zarzadza kolejka zdarzeń, QObject : Klasa bazowa dla klas Qt majacych dostęp do sygnałów, slotów i zdarzeń. INNE PRZYDATNE KLASY QIconSet : Zbiór ikon (np. dla klawiszy), QRangeControl: Kontrola zakresu dla liczb całkowitych.
Wybrane komponenty pomocnicze OGÓLNE KLASY NARZEDZI QArray QList QQueue QString : Wzorzec tablicy dla typów prostych, : Wzorzec listy dwukiernkowej, : Wzorzec kolejki, : Klasa ciagów znakowych. KLASY OPERACJI I/O QFile QIODevice QImageIO : Operacje na plikach, : Operacje na urzadzeniach I/O, : Zawiera parametry dla operacji wczytywania i zapisu obrazów, QSocketNotifier: Wspmaga połaczenia poprzez gniazdka KLASY OPERACJI NA OBRAZACH QImage QMovie : Mapa pikselwa sprzętowo niezależna z bezpośrednim dostępem do pikseli, : Wspomaganie animacji (ładowanie obrazów po określonej przerwie). KLASY DATY I CZASU QData QTime QTimer : Obsługa odczytu daty, : Obsługa odczytu czasu, : Generowanie periodycznych sygnałów.
Najprostszy program w Qt #include qapplication.h #include qmessagebox.h int main( int argc, char argv ) { QApplication app( argc, argv ); QMessageBox Message("Wazne pytanie","byc albo nie byc?", QMessageBox::Critical, QMessageBox::Yes, QMessageBox::No,0); return Message.exec(); }