Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Qt Framework
Thomas Keller - itCampus GmbH14.08.2008
Creative Commons Namensnennung-Keine kommerzielle Nutzung 2.0 Deutschland Lizenz
1Donnerstag, 14. August 2008
Überblick
2Donnerstag, 14. August 2008
Die Themen
• Was ist Qt?
• Anwendungen
• Module
• Was macht Qt besonders?
• Entwicklungstools
• Demoreel
3Donnerstag, 14. August 2008
Was ist Qt?
4Donnerstag, 14. August 2008
Qt ist...
• ein modulares, stringent aufgebautes Entwicklungsframework
• plattform- und architekturunabhängig
• frei bzw. kommerziell lizensierbar (keine funktionalen Einschränkungen bei freier Lizenz)
• ausgesprochen „Cute“ ;)
5Donnerstag, 14. August 2008
Framework-Überblick6Donnerstag, 14. August 2008
Anwendungen
7Donnerstag, 14. August 2008
Qt-Anwendungen
• Qt-Anwendungen sind in der Regel C++ oder Java-Anwendungen („Qt Jambi“) - Qt/Cocoa-Port in Vorbereitung
• „bekannte“ Desktop-Vertreter sind Google Earth, Skype, Adobe Photoshop Album und Unmengen an freier Software (KDE, ...)
• Qtopia (die embedded-Version von Qt) wird bspw. in MOTOROKR-Serie von Motorola genutzt
8Donnerstag, 14. August 2008
Archos 604 Wifi9Donnerstag, 14. August 2008
Module
10Donnerstag, 14. August 2008
Core und GUI
• QtCore - Basisklassen für Nicht-GUI-Anwendungen (Datenstrukturen, Basis-XML-Support, Highlevel-/Lowlevel-Threads, Basis-I/O, Prozessunterstützung, Model-Part des Interview-Framework)
• QtGui - Basisklassen für GUI-Anwendungen (Widgets, Layouts, Graphics View, Application Styling, View-Part des Interview-Framework)
11Donnerstag, 14. August 2008
Netzwerk, Scripting, SQL
• QtNetwork - Highlevel-TCP/IP-Support (Implementierungen von HTTP(S) und FTP, TCP-/UDP-/SSL-Sockets)
• QtScript - ECMA-Scripting für Qt-Applikationen
• QtSQL - Datenbankintegration (Treiber für MySQL, Postgres, SQLite und ODBC liegen der freien Version bei)
12Donnerstag, 14. August 2008
...und noch mehr
• QtSvg - SVG 1.2 Tiny Leseunterstützung
• QtWebKit - Browserintegration
• QtXML - DOM/SAX-Implementierung
• QtXMLPatterns - XPath-/ XQuery-Support
• Phonon - Multimedia-Wrapper (von KDE)
13Donnerstag, 14. August 2008
Was macht Qt besonders?
14Donnerstag, 14. August 2008
...warum Qt?• ausgereifte API, schnelle Entwicklung,
schnelles Prototyping
• natives Look‘n‘Feel auf allen Plattformen; enge Systemintegration (Desktop Services)
• Umfangreiche Widget-/Dialogunterstützung
• Signals and Slots - komfortable Alternative zu unsicheren Callbacks, selbst über Threadgrenzen hinweg!
15Donnerstag, 14. August 2008
Und noch mehr Gründe• Durchdachtes Model-View-Konzept mit
TreeViews, TableViews uva. sowie den dazugehörigen Modelklassen
• High-Level-Threads; einfach skalierbare Anwendungen mit QtConcurrent (MapReduce, FilterReduce)
• Plugin-System, Unit-Testing, Tool-/Containerklassen, ...
• umfangreiche Entwicklungstools...
16Donnerstag, 14. August 2008
Entwicklungstools
17Donnerstag, 14. August 2008
qmake• übersetzt Projekt-Dateien (*.pro) in
Makefiles, Visual Studio Projektdateien oder Xcode-Projekte
• qmake-Projektdateien: einfache, deklarative Textdateien...HEADERS += src/mainwindow.hwin32:HEADERS += src/mainwindow_win32.hDESTDIR = binTRANSLATIONS = res/i18n/guitone_de.tsRESOURCES = res/guitone.qrcmacx:CONFIG(release, debug|release):CONFIG += x86 ppc...
18Donnerstag, 14. August 2008
Show me the Code!• eine ganz einfache Qt-GUI-Anwendung
$ vi test.cpp#include <QtGui>...Ctrl+D$ qmake -project # erzeuge.pro$ qmake # erzeuge Makefile$ make # erstelle Anwendung$ ./test
19Donnerstag, 14. August 2008
Qt Designer20Donnerstag, 14. August 2008
Qt-Designer
• Einfaches Layouten per Mausklick
• Signals/Slots-Integration
• Vorschau für versch. Plattformen
• Stylesheets
• integrierbar in MS Visual Studio und Eclipse (QtJambi)
21Donnerstag, 14. August 2008
Browser-Demo
• Einen funktionsfähigen Webbrowser mit wenigen Klicks erstellen...
(In QDesigner wir ein QWebView mit drei Buttons für die Aktionen „Vor“, „Zurück“ und „Neu Laden“ erstellt - der
Browser ist sofort bedienbar)
22Donnerstag, 14. August 2008
Qt Linguist23Donnerstag, 14. August 2008
Wie lokalisiere ich meine Anwendung?
• Strings mit tr() markieren
• $ lupdate srcdir -ts app_de.ts
• mit Linguist ts-Datei übersetzen
• $ lrelease app_de.ts -qm app_de.qm
• QTranslator zum Laden der Übersetzung nutzen
24Donnerstag, 14. August 2008
Lokalisierungs-Demo
• Eine kleine Utility-Anwendung zur Zeitmessung wird ins Deutsche übersetzt...
(Die WorkTimer Beispielapplikation wird, dem Ablauf auf der vorherigen Folie folgend, lokalisiert. In der Datei main.cpp wird
die resultierende Sprachdatei geladen.)
25Donnerstag, 14. August 2008
Demoreel
(Die QtDemo Applikation und zahlreiche Beispielapplikationen werden vorgeführt.)
26Donnerstag, 14. August 2008
Danke für die Aufmerksamkeit!
Fragen, Wünsche oder Anregungen?
27Donnerstag, 14. August 2008
Quellen
• http://trolltech.com/products/qt et al
• http://trolltech.com/company/customers/customer-devices
• http://archos.com/img/archos_604wifi/download/ARCHOS_604wifi-finger_browsing.png
28Donnerstag, 14. August 2008