Autor: Jarosław Hryciuk

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Mechanizmy pracy równoległej
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Wzorce.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Bezpieczeństwo wyjątków w C++: OpenGL
Systemy rozproszone W. Bartkiewicz
1 Linux jako system wielozadaniowy i wielodostępny.
Szablony (wzorce) Przykład 1: Szablon klasy -
ASP.NET 2.0 AJAX Extensions 1.0
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Internet Communication Engine
Eclipse jako IDE III a.
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
C++ wykład 2 ( ) Klasy i obiekty.
Wstęp do Qt Qt to zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języka C++ podstawowym składnikiem są klasy służące do budowy.
Seminarium Informatyka Prowadzący dr Grzegorz Wójcik
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Wielosystemowa platforma C++
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
REPOZYTORIA 1. Co to są repozytoria?
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
C# Windows Forms Zastosowania Informatyki Wykład 3
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Web Serwisy w praktyce Technologie internetowe ( )
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania II
Podstawy programowania II
Systemy operacyjne.
Programowanie obiektowe – zastosowanie języka Java SE
Java – coś na temat Klas Piotr Rosik
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
LINUX MAGDALENA SALIK.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
SPECJALNOŚĆ: Oprogramowanie Systemowe
Telefony Świata.
systemy zarządzania bazami danych
HTML (ang. HyperText Markup Language ) – język do tworzenia stron internetowych opierający się na znacznikach, czy inaczej je nazywając – tagach. Język.
Kurs języka C++ – wykład 4 ( )
Podstawy języka skryptów
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Temat 1 Pojęcie systemu operacyjnego Opracował: mgr Marek Kwiatkowski.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Temat 4 Systemy plików [Przedmiot: Systemy operacyjne | Opracował: mgr Marek Kwiatkowski | ZS Mogilno – 2015]
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Tworzenie dokumentacji w systemie Doxygen Paweł Strużyński 25 maja 2011.
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
PROGRAMY DO KONTROLI RODZICIELSKIEJ
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Aplikacje i usługi internetowe
Założenia projektowe Javy
Zapis prezentacji:

Autor: Jarosław Hryciuk j.hryciuk@students.mimuw.edu.pl Biblioteka QT Autor: Jarosław Hryciuk j.hryciuk@students.mimuw.edu.pl

Plan prezentacji: Twórcy Zastosowania Licencja Rozszerzenia C++: Qt Object Model Co może biblioteka Qt

Twórcy biblioteki: Trolltech Firma norweska Główny produkt: Qt Qtopia

Zastosowania Mnóstwo udanych, komercyjnych produktów opartych na Qt Środowisko KDE pod X Windows System Mnóstwo różnorakiego oprogramowania użytkowego na licencji GPL pod X11.

Licencja Wersja GPL tylko na platformy Unix/X11, Macintosh, Linux/embedded. Wersja komercyjna także na platformę Windows 32 bit.

Przenaszalność Wersje dla różnych systemów operacyjnych Niezależny od kompilatora; rozszerzenia języka są oparte na Meta Object System, a nie na rozszerzeniach konkretnego kompilatora

Qt Object System Sygnały i sloty Własności obiektów QString – internacjonalizacja napisów. Zdarzenia i filtry zdarzeń Drzewa obiektów, porzucanie obiektów Strzeżone wskaźniki

Sygnały i sloty Funkcja: komunikacja między obiektami QOBJECT Wygodne przy tworzeniu interfejsów graficznych Sygnał podłączany do slotu Relacja wiele-do-wielu.

Sygnały i sloty Makrodefinicja potrzebna do MOC Foo a, b; class Foo : public QObject { Q_OBJECT public: Foo(); int value() const { return val; } public slots: void setValue( int ); signals: void valueChanged( int ); private: int val; }; Makrodefinicja potrzebna do MOC void Foo::setValue( int v ) { if ( v != val ) { val = v; emit valueChanged(v); } Foo a, b; connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int))); b.setValue( 11 ); // a == undefined b == 11 a.setValue( 79 ); // a == 79 b == 79 b.value(); // returns 79

Sygnały i sloty: dlaczego? Zróżnicowana obsługa zaawansowanych opcji szablonów w różnych kompilatorach. Problem z częściowym instancjonowaniem szablonów. Przejrzystość kodu, łatwa intuicja pomagająca zrozumieć istotę działania. Zamiast rozszerzanych kompilatorów, specyficznych IDE, mamy MOC (meta object compiler) produkujący standardowy kod C++ kompilowalny na każdym kompilatorze.

Sygnały i sloty vs. „callback” Zalety: Wygodniejsze w użyciu. Bezpieczne pod względem typów (type safe) – tylko sygnał zgodny z typem slotu może zostać do niego podłączony. Projektując slot/sygnał nie musimy wiedzieć jak zostanie podłączony. Pełna abstrakcja i modularyzacja. Wady: Około 10x wolniejsze niż „tradycyjne” callback.

QString Klasa do reprezentacji napisów. Wewnętrzny sposób kodowania: unicode. Używamy tr() do tekstów widocznych dla użytkownika: LoginWidget::LoginWidget() { QLabel *label = new QLabel( tr("Password:"), this ); ... } Używanie tr() w całej aplikacji gwarantuje właściwe kodowanie napisów.

QString Parametryzowane napisy: QString s1 = "%1 of %2 files copied. Copying: %3"; QString s2 = "Kopierer nu %3. Av totalt %2 filer er %1 kopiert."; qDebug( s1.arg(5).arg(10).arg("somefile.txt").ascii() ); qDebug( s2.arg(5).arg(10).arg("somefile.txt").ascii() ); 5 of 10 files copied. Copying: somefile.txt Kopierer nu somefile.txt. Av totalt 10 filer er 5 kopiert.

Zdarzenia i filtry zdarzeń Zdarzenie to klasa, która dziedziczy po QEvent. QResizeEvent, QPaintEvent, QKeyEvent, QTimerEvent, QMouseEvent etc. Mechanizm filtrowania zdarzeń.

Filtrowanie zdarzeń Pozwala na przechwytywanie i filtrowanie zdarzeń adresowanych do innych obiektów. Wygodne przy tworzeniu GUI, np. okienka dialogowe często potrzebują przechwycić zdarzenie naciśnięcia klawisza Enter w innym widget i specjalnie je obsłużyć.

Filtrowanie zdarzeń class KeyPressEater : public QObject { protected: bool eventFilter( QObject *o, QEvent *e ); }; bool KeyPressEater::eventFilter( QObject *o, QEvent *e ) { if ( e->type() == QEvent::KeyPress ) { // special processing for key press QKeyEvent *k = (QKeyEvent *)e; qDebug( "Ate key press %d", k->key() ); return TRUE; // eat event } else { // standard event processing return FALSE; } KeyPressEater *keyPressEater = new KeyPressEater( this ); QPushButton *pushButton = new QPushButton( this ); QListView *listView = new QListView( this ); pushButton->installEventFilter( keyPressEater ); listView->installEventFilter( keyPressEater );

Drzewa obiektów Jeśli tworzymy jakiś QObject deklarując, że rodzicem jest jakiś inny QObject nasz obiekt jest dodawany do listy children() rodzica. Jeśli obiekt-rodzic zostaje zniszczony, obiekty z listy children() zostają także usunięte. Dostęp do wszystkich obiektów-korzeni drzew zależności mamy przez funkcję QObject::objectTrees() QObject::dumpObjectTree() i QObject::dumpObjectInfo() służą do debugowania, gdy aplikacja zachowuje się dziwnie.

Strzeżone wskaźniki Klasa QGuardedPtr jest szablonem do strzeżonych wskaźników do QObject. Strzeżony wskaźnik, QGuardedPtr<X>, zachowuje się jak normalny wskaźnik C++ X*, z tym, że gdy obiekt do którego się odnosi zostanie zniszczony, jest automatycznie ustawiany na 0 (w przeciwieństwie do zwyczajnych wskaźników C++, które w takim przypadku stają się „dyndającymi wskaźnikami”). X musi być podklasą QObject. dddd QGuardedPtr<QLabel> label = new QLabel( 0, "label" ); label->setText( "I like guarded pointers" ); delete (QLabel*) label; // niszczymy wskaźnik if ( label) label->show(); else qDebug("The label has been destroyed");

Co może biblioteka Qt ? Doskonały zestaw klas pozwalający na budowanie aplikacji opartych na graficznym interfejsie użytkownika Podsystem sieciowy. Niezależny od platformy bardzo wygodny interfejs gniazd oparty na sygnałach/slotach. Podsystem SQL, możliwość dołączania własnych sterowników. Funkcjonalność podobna do JDBC. Obsługiwane: MySQL, Oracle, ODBC, PostgreSQL, Sybase, IBM DB2 Wsparcie dla XML, parser SAX 2 (Simple API for XML), DOM Level 2.

Kylix Kylix to środowisko RAD (Rapid Application Development) pod Linuxa. Odpowiednik Delphi i C++ Buildera z pod Windows. Autor: firma Borland. Aplikacje tworzone w Kylix używają biblioteki Qt do realizacji interfejsu użytkownika.

Qtopia Oparta na bibliotece Qt. Platforma dla urządzeń mobilnych z Linuxem, np. dla telefonów komórkowych. Np. Motorola wybrała Qtopię jako środowisko dla jej A760 Linux Smartphone (aparat, cyfrowy, mp3, video, internet) Wymagania: aby działał linux/embedded z jądrem 2.4, IPC, framebuffer.

Wnioski Bardzo obszerne, dobrze zaprojektowane środowisko do tworzenia aplikacji z graficznym interfejsem użytkownika. Funkcjonalne i praktyczne. Szeroko używane na świecie w projektach komercyjnych i niekomercyjnych.

Dodatkowe źródła Qt Reference Documentation Strona firmy Trolltech – http://www.trolltech.no

Dziękuję Prezentacja dostępna pod adresem: http://rainbow.mimuw.edu.pl/~jh189390/qtprez/index.html