Qt sygnały i designer

Podobne dokumenty
Praca z aplikacją designer

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Wprowadzenie do szablonów klas

Schemat konstrukcja pliku Makefile

Szablony funkcji i szablony klas

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Weryfikatory, zasoby graficzne

Qt - dialogi. Bogdan Kreczmer. ZPCiR ICT PWR pokój 307 budynek C3

Qt - podstawowe cechy

Programowanie w środowiskach RAD Qt i C++

Zasoby, pliki graficzne

Wprowadzenie do szablonów szablony funkcji

Qt - edycja, obsługa zdarzeń, rozmieszczenie kontrolek

Wprowadzenie do szablonów szablony funkcji

Dalmierze optyczne. Bogdan Kreczmer.

Podstawy programowania w Qt4

Pola i metody statyczne

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Czujniki PSD i dalmierze triangulacyjne

Programowanie w środowiskach RAD QtCreator, Qt i C++

Wyliczanie wyrażenia obiekty tymczasowe

Qt po polsku. Bogdan Kreczmer.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Signals + Threads: Qt vs. Boost

Lista dwukierunkowa - przykład implementacji destruktorów

Referencje do zmiennych i obiektów

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Wartości domyślne, przeciażenia funkcji

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Wartości domyślne, przeciażenia funkcji

Czujniki PSD i dalmierze triangulacyjne

TEMAT : KLASY POLIMORFIZM

Wprowadzenie do UML, przykład użycia kolizja

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zofia Kruczkiewicz, ETE8305_2 1

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

Qt hierarchia elementów graficznych

GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Konstruktor kopiujacy

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

dr inż. Jarosław Forenc

Operacje wejścia/wyjścia (odsłona druga) - pliki

Hermetyzacja oraz pola i metody statyczne

Co nie powinno być umieszczane w plikach nagłówkowych:

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie 2. Język C++. Wykład 3.

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Zaawansowane programowanie w języku C++ Klasy w C++

Operacje wejścia/wyjścia odsłona pierwsza

Plik klasy. h deklaracje klas

Przesłanianie nazw, przestrzenie nazw

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Szablon klasy std::vector

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Diagramy UML, przykład problemu kolizji

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Wykład 4: Klasy i Metody

Dziedziczenie i poliformizm

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Szablon klasy std::list

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wprowadzenie do programowanie obiektowego w języku C++

Mechanizm sygnałów i slotów. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4. Sygnały i sloty - definicja klasy

Polimorfizm, metody wirtualne i klasy abstrakcyjne

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie 2. Język C++. Wykład 2.

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Szablony funkcji i klas (templates)

Programowanie obiektowe

Wprowadzenie do tworzenia zaawansowanych interfejsów graficznych: QGraphics View Framework vs. QML. Jakub Bogacz. Patryk Górniak

Programowanie obiektowe w języku

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Programowanie, część I

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Klasa, metody, rozwijanie w linii

Geneza powstania języka C++

Klasa, metody, rozwijanie w linii

Wykład 5 Okna MDI i SDI, dziedziczenie

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Rzutowanie i konwersje

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Zaawansowane programowanie w C++ (PCP)

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie Obiektowe i C++

Transkrypt:

Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową. Qt sygnały i designer

Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net Qt sygnały i designer

1 Reakcja na zadarzenia Podstawowe mechanizmy 2 Makro Q OBJECT Makra signals i slots 3 Tworzenie własnego okienka Własne okienko Qt sygnały i designer

Sposoby reakcji na zdarzenia Podstawowe mechanizmy Metody wirtualne reimplementacja metod poprzez dziedzieczenie. Możliwa tylko we własnych klasach pochodnych. Sygnały i sloty łączenie akcji z reakcją. Można łączyć gotowe elementy bez jakichkolwiek modyfikacji.

Sygnały i sloty Reakcja na zadarzenia Makro Q OBJECT Makra signals i slots Zawartość pliku kanwa.hh: #ifndef KANWA HH #define KANWA HH #include <QWidget > Q OBJECT Kanwa(QWidget wrodzic = NULL); public slots : void GdyRysuj(); signals: void JestNarysowane(); #endif

Wywołanie preprocesora języka C Polecenie: Makro Q OBJECT Makra signals i slots cpp -I/usr/include/c++/4.4 -I/usr/include/qt4 \ -I/usr/include/qt4/Qt -I/usr/include/qt4/QtCore \ -I/usr/include/qt4/QtGui kanwa.hh

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym jest Q OBJECT template <typename T> inline void qt check for QOBJECT macro(const T & q argument) const { int i = qyouforgottheq OBJECT Macro(this, & q argument); i = i; } static const QMetaObject staticmetaobject; virtual const QMetaObject metaobject() const ; virtual void qt metacast(const char ); static inline QString tr(const char s, const char c = 0) { return staticmetaobject.tr(s, c); } static inline QString trutf8(const char s, const char c = 0) { return staticmetaobject.trutf8(s, c); } static inline QString tr(const char s, const char c, int n) { return staticmetaobject.tr(s, c, n); } static inline QString trutf8(const char s, const char c, int n) { return staticmetaobject.trutf8(s, c, n); } virtual int qt metacall(qmetaobject::call, int, void ); private : Kanwa(QWidget wrodzic = NULL);...

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym jest Q OBJECT template <typename T> inline void qt check for QOBJECT macro(const T & q argument) const { int i = qyouforgottheq OBJECT Macro(this, & q argument); i = i; } static const QMetaObject staticmetaobject; virtual const QMetaObject metaobject() const ; virtual void qt metacast(const char ); static inline QString tr(const char s, const char c = 0) { return staticmetaobject.tr(s, c); } static inline QString trutf8(const char s, const char c = 0) { return staticmetaobject.trutf8(s, c); } static inline QString tr(const char s, const char c, int n) { return staticmetaobject.tr(s, c, n); } static inline QString trutf8(const char s, const char c, int n) { return staticmetaobject.trutf8(s, c, n); } virtual int qt metacall(qmetaobject::call, int, void ); private : Kanwa(QWidget wrodzic = NULL);...

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty template <typename T> inline void qt check for QOBJECT macro(const T & q argument) const { int i = qyouforgottheq OBJECT Macro(this, & q argument); i = i; }... private : public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty template <typename T> inline void qt check for QOBJECT macro(const T & q argument) const { int i = qyouforgottheq OBJECT Macro(this, & q argument); i = i; }... private : public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty Q OBJECT Kanwa(QWidget wrodzic = NULL); public slots : void GdyRysuj(); signals: void JestNarysowane(); private :... public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty Q OBJECT Kanwa(QWidget wrodzic = NULL); public slots : void GdyRysuj(); signals: void JestNarysowane(); private :... public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty Q OBJECT Kanwa(QWidget wrodzic = NULL); public slots : void GdyRysuj(); signals: void JestNarysowane(); private :... public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Makro Q OBJECT Makra signals i slots Po rozwinięciu czym są sygnały i sloty Q OBJECT Kanwa(QWidget wrodzic = NULL); public slots : void GdyRysuj(); signals: void JestNarysowane(); private :... public: Kanwa(QWidget wrodzic = NULL); public: void GdyRysuj(); protected: void JestNarysowane();

Aplikacja designer Tworzenie własnego okienka Własne okienko

Aplikacja designer Tworzenie własnego okienka Własne okienko 1 Wybór rodzaju komponentu 2 Ustalenie własności tworzonego komponentu. Nazwa wpisywana w polu objectname staje się nazwą klasy tworzonego komponentu.

Aplikacja designer Tworzenie własnego okienka Własne okienko Klawisz pobieramy z okna narzędziowego. Własności i nazwę pola wskaźnikowego modyfikujemy w edytorze własności.

Łączenie sygnałów i slotów Tworzenie własnego okienka Własne okienko Przejście do trybu edycji sygnałów. Myszką łączymy wybrane kontrolki. W dialogu wyboru połączeń dokonujemy zestawiania odpowiedniego sygnału i slotu.

Łączenie sygnałów i slotów Tworzenie własnego okienka Własne okienko

Tworzenie własnego okienka Własne okienko Plik opisów kompontentów: wlasne okno.ui <?xml version="1.0" encoding="utf-8"?> <ui version="4.0"> <class>mojeokienko</class> <widget class="qwidget" name="mojeokienko"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>326</width> <height>231</height> </rect> </property> <property name="windowtitle"> <string>okieno</string> </property> <widget class="qpushbutton" name="_przyciskkoniec"> <property name="geometry"> <rect> <x>90</x> <y>70</y> <width>141</width> <height>91</height> </rect> </property> Qt sygnały i designer

Tworzenie własnego okienka Własne okienko Korzystanie z komponentów tworzonych przez designer a Użycie bezpośrednie umieszenie komponentu w okienku tworzonym przez jedną ze standardowych klas (np. QWidget, QDialog itp.) Dziedziczenie jednokrotne deklaracja komponentu jako pole w klasie dziedziczącej jedną ze standardowych klas (np. QWidget, QDialog itp.) tworzących okienko Dziedzieczenie wielokrotne zdefiniowanie klasy dziedziczącej komponent oraz jedną ze standardowych klas (np. QWidget, QDialog itp.) tworzących okienko Qt sygnały i designer

Użycie bezpośrednie Tworzenie własnego okienka Własne okienko #include komponent.h #include <QApplication> #include <QDialog> int main( int argc, char argv[ ] ) { QApplication app( argc, argv ); QDialog wokno = new QDialog; Ui::Komponent Komp; Komp.setupUi( wokno ); } wokno >show( ); return app.exec( ); Qt sygnały i designer

Dziedziczenie jednokrotne Tworzenie własnego okienka Własne okienko class OkienkoZPrzyciskiem : public QDialog { Q OBJECT OkienkoZPrzyciskiem( QWidget rodzic = 0 ); private : Ui::Komponent ui; OkienkoZPrzyciskiem::OkienkoZPrzyciskiem( QWidget rodzic) : QDialog( rodzic ) { ui.setupui( this ); // Dodatkowe ustawienia // Wywołanie metody nadającej nazwy // Połączenia sygnałów i slotów } Qt sygnały i designer

Dziedziczenie wielokrotne Tworzenie własnego okienka Własne okienko class OkienkoZPrzyciskiem : public QDialog, private Ui::Komponent { Q OBJECT OkienkoZPrzyciskiem( QWidget rodzic = 0 ); OkienkoZPrzyciskiem::OkienkoZPrzyciskiem( QWidget rodzic) : QDialog( rodzic ) { setupui( this ); // Dodatkowe ustawienia // Wywołanie metody nadającej nazwy // Połączenia sygnałów i slotów } Qt sygnały i designer

Koniec prezentacji Dziękuję za uwagę Qt sygnały i designer