25

Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

  • Upload
    doanbao

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5
Page 2: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5
Page 3: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Qt-Entwicklung für Symbian, Android und Desktop

Tam Hanna

Page 4: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Tam Hanna Qt-Entwicklung für Symbian, Android und DesktopISBN: 978-3-86802-249-0

© 2011 entwickler.pressEin Imprint der Software & Support Media GmbH

Bibliografische Information Der Deutschen BibliothekDie Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Ihr Kontakt zum Verlag und Lektorat:Software & Support Media GmbHentwickler.press Geleitsstr. 1460599 Frankfurt am MainTel.: +49 (0)69 630089-0Fax: +49 (0)69 [email protected]://www.entwickler-press.de

Lektorat: Sebastian BurkartKorrektorat: Redaktion ALUAN KölnSatz: Dominique KalbassiBelichtung, Druck & Bindung: M.P. Media-Print Informationstechnologie GmbH, Paderborn

Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Foto-kopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder anderen Ver-fahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht über-nommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt.

Page 5: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

I5Qt-Entwicklung

Inhaltsverzeichnis

Vorwort 13

Einleitung 11 5

1.1 Warum Qt? 15

1.2 Für wen ist dieses Buch? 15

1.3 Wie soll man dieses Buch lesen? 16

1.4 Wie funktioniert Qt? 16

1.5 Historisches 19

1.5.1 Version 1 19

1.5.2 Version 2 19

1.5.3 Version 3 20

1.5.4 Version 4.0 20

1.5.5 Version 4.1 20

1.5.6 Version 4.2, 4.3 20

1.5.7 Version 4.4 20

1.5.8 Version 4.5 20

1.5.9 Version 4.6 21

1.5.10 Version 4.7 21

1.6 Lizenzrechtliches 21

Erste Schritte 22 3

2.1 Qt Creator installieren 23

2.1.1 Qt Assistant 23

2.1.2 Qt Creator 24

2.1.3 Qt Linguist 24

2.1.4 Qt Command Line 24

2.2 Ein neues Projekt 25

2.3 Dateienkunde 28

2.3.1 .pro-Datei 29

2.3.2 .ui-Dateien 29

2.3.3 .cpp-Dateien 30

2.3.4 .h-Dateien 30

Page 6: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

6

Inhaltsverzeichnis

2.4 Primitive GUIs 30

2.5 Signale und Slots 31

2.5.1 Theoretisches 31

2.5.2 Slot erstellen 32

2.5.3 Signal und Slot verdrahten 34

2.6 Layouts 35

2.7 Fazit 38

Primitive GUIs 33 9

3.1 QMainWindow und QDialog 39

3.1.1 Formulare zum Projekt hinzufügen 40

3.1.2 Startformular festlegen 41

3.1.3 Zwischen Formularen wechseln 42

3.1.4 Rückmeldungen senden 42

3.2 Steuerelemente im Kurzporträt 44

3.2.1 Layouts 45

3.2.2 Spacers 46

3.2.3 Buttons 46

3.2.4 Item Views 47

3.2.5 Item Widgets 48

3.2.6 Container 48

3.2.7 Input Widgets 52

3.2.8 Display Widgets 55

3.3 QMessageBox 56

3.4 Fortgeschrittene Widget-Spielereien 57

3.4.1 Von Widgets erben 57

3.4.2 Auf Widgets zeichnen 60

Komplexe GUIs 64 1

4.1 Menüs 61

4.1.1 Simple Menüs 61

4.1.2 Auswahlmenüs 63

4.1.3 Pop-up-Menüs 64

4.2 Item Widgets 65

4.2.1 List Widget 65

4.2.2 Tree Widget 67

4.2.3 Table Widget 68

Page 7: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

7Qt-Entwicklung

Inhaltsverzeichnis

4.3 Item Views 71

4.3.1 Generische Modelle 72

4.3.2 QStringListModel 72

4.3.3 Modellindizes 74

4.3.4 QFileSystemModel 75

4.3.5 Eigene Modelle 75

Dateien und Ressourcen 75 9

5.1 QDir/QFile 79

5.1.1 Pfade finden 79

5.1.2 Ordnerstrukturen durchlaufen 80

5.1.3 Dateien/Ordner löschen 81

5.1.4 Dateien umbenennen 81

5.1.5 Primitives File-IO 82

5.2 QTemporaryFile 82

5.3 QDataStream/QTextStream 83

5.4 QFileSystemMonitor 84

5.5 QSettings 86

5.6 Ressourcen 87

5.6.1 Ressourcendatei erstellen 87

5.6.2 Auf Ressourcen zugreifen 91

5.6.3 Ressourcen „externalisieren“ 91

5.7 SQL 92

Netzwerke und XML 96 3

6.1 QFtp 93

6.1.1 Mit FTP-Servern verbinden 93

6.1.2 FTP-Informationen bekommen 94

6.1.3 FTP-Dateiliste abrufen 95

6.1.4 Mehr QFtp 98

6.2 QHttp 98

6.3 QNetworkAccessManager 98

6.3.1 Auf Weiterleitungen reagieren 100

6.4 Grundlagen zu XML 101

6.5 Streaming/Pull Parsing 103

6.6 DOM 105

6.7 SAX 106

Page 8: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

8

Inhaltsverzeichnis

Klassische Systemtechnik 107 7

7.1 QObject 107

7.1.1 Speicherverwaltung 108

7.1.2 Reflexion – was bin ich? 110

7.1.3 Weitere Features von QObject 112

7.2 Die Modularchitektur von Qt 113

7.3 QVariant – ein Typ für alles 114

7.3.1 Unterstützte Typen 114

7.3.2 Daten ein- und ausgeben 116

7.3.3 QVariant als Konverter 117

7.4 Generische Strukturen à la Qt 118

7.4.1 Vektoren 119

7.4.2 Listen 120

7.4.3 Hashmaps 120

7.4.4 Queues/Stacks 121

Lokalisierung 128 3

8.1 Das Qt-Lokalisierungssystem 123

8.2 Anwendung lokalisierbar machen 124

8.3 Komplexe Strings internationalisieren 129

8.3.1 Zweideutigkeiten auflösen 129

8.3.2 Parameter verarbeiten 130

8.3.3 Plurale verarbeiten 130

8.4 Qt Linguist ausliefern 131

8.5 Qt Linguist verwenden – für Übersetzer 131

8.5.1 Sonderfall 1: %1 132

8.5.2 Sonderfall 2: <blahblah> 133

Symbian 139 5

9.1 Wie sieht Symbian aus? 135

9.1.1 S60v3 136

9.1.2 S60v5 137

9.1.3 Symbian 3 138

9.2 Entwicklungswerkzeuge 139

9.3 Erste Schritte 140

9.3.1 Symbian-Spezifisches im Programmskelett 144

9.3.2 Anwendung im Simulator testen 144

9.3.3 Anwendung am Telefon testen 147

Page 9: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

9Qt-Entwicklung

Inhaltsverzeichnis

9.4 Netzwerkzugriff 150

9.5 Natives 150

9.5.1 Bildschirmausrichtung sperren 151

9.5.2 Softkeys 153

9.5.3 Minimierung detektieren 154

9.5.4 Icons 156

9.5.5 Sound 159

9.5.6 Auf Anrufe reagieren 161

9.6 Capabilities 164

9.6.1 LocalServices 164

9.6.2 UserEnvironment 165

9.6.3 NetworkServices 165

9.6.4 ReadUserData 165

9.6.5 WriteUserData 165

9.6.6 Location 165

9.6.7 SwEvent 165

9.6.8 SurroundingsDD 165

9.6.9 ProtServ 165

9.6.10 PowerMgmt 166

9.6.11 ReadDeviceData 166

9.6.12 WriteDeviceData 166

9.6.13 TrustedUI 166

9.6.14 NetworkControl 166

9.6.15 MultimediaDD 166

9.6.16 CommDD 166

9.6.17 DiskAdmin 166

9.6.18 AllFiles 166

9.6.19 DRM 167

9.6.20 TCB 167

9.7 Signing 167

9.7.1 Self Signed 167

9.7.2 Open Signed Online 167

9.7.3 Developer Certificate 168

9.7.4 Express Signed 168

9.7.5 Certified Signed 169

9.7.6 Manufacturer Signed 169

9.7.7 Symbian Signed for Nokia 169

Page 10: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

10

Inhaltsverzeichnis

9.8 Anwendungen für Ovi verpacken 170

9.8.1 Smart Installer 170

9.8.2 Anwendung verpacken 171

9.8.3 Hochladen 175

9.8.4 Ovi-Client starten 177

9.9 Anwendung via ESD vertreiben 178

9.10 Fazit 178

Android 1710 9

10.1 Wie sieht Android aus? 180

10.2 Necessitas installieren 182

10.2.1 Necessitas entpacken 183

10.2.2 Qt Creator konfigurieren 184

10.3 Debugging 185

10.3.1 Android-Spezifisches 186

10.3.2 Testen im Emulator 189

10.3.3 Testen am Gerät 191

10.4 Android Market 192

Maemo/Symbian via Nokia Qt SDK 1911 5

11.1 Qt SDK beschaffen 195

11.2 Symbian-Entwicklung mit dem Qt SDK 195

11.3 Maemo 5 198

11.3.1 Wie sieht Maemo aus? 199

11.3.2 Anwendung debuggen 200

11.3.3 Anwendung ausliefern 204

MeeGo 2012 7

12.1 Anwendungsszenarien 207

12.1.1 Netbook 207

12.1.2 Handset 209

12.1.3 Tablet 210

12.1.4 In-Vehicle Infotainment 210

12.1.5 Smart TV 210

12.2 MeeGo-SDK installieren 210

Page 11: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

11Qt-Entwicklung

Inhaltsverzeichnis

12.3 WeTab 212

12.3.1 WeTab-Entwicklungsumgebung 212

12.3.2 Die Sidebar 219

12.3.3 Anwendungen ausliefern 220

QML/Qt Quick 2213 1

13.1 Hallo Qt Quick 221

13.2 Komponenten 222

13.3 Zustände/Interaktivität 225

13.4 Verdrahtung mit C++ 227

13.5 Qt Quick mit Photoshop/GIMP 229

13.6 Fazit 229

Dies und das 2314 1

14.1 Qt Mobility 231

14.2 Sound mit Qt 232

14.2.1 QSound 232

14.2.2 Phonon 234

Zu Hilfe! 2315 7

15.1 Qt-Foren 237

15.2 Plattformspezifisches 237

15.2.1 Symbian 238

15.2.2 Android 238

15.2.3 Maemo 238

15.3 Fehler berichten 239

15.3.1 Ein guter Fehlerbericht 239

15.3.2 „Nokia ist schuld“ 239

15.3.3 Bogdan Vatra ist schuld 239

15.4 Autor kontaktieren 240

Stichwortverzeichnis 241

Page 12: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5
Page 13: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

V13Qt-Entwicklung

Vorwort

Korrekturen herunterladen – JETZT

Qt entwickelt sich mit rasender Geschwindigkeit – wenn ein Lehrbuch zum Thema ge-druckt ist, ist es schon schwer veraltet. Aus diesem Grund gibt es zu diesem Buch aktuelle Korrekturen im PDF-Format, die unter www.entwickler-press.de/qt heruntergeladen wer-den können. Bitte werfen Sie regelmäßig einen Blick auf die Buchseite um keine Aktuali-sierung zu verpassen – es wird ihnen viel Aufwand ersparen.

Sollten Sie selbst etwas Seltsames bemerken, melden Sie sich bitte unter [email protected]. Wer etwas Produktives beiträgt, ist nicht nur ein guter Mensch, er bekommt zusätzlich eine kostenlose Lizenz eines Programms meines Unternehmens für sein Telefon – sozial sein lohnt sich also!

Über den Autor

Meine Wenigkeit befasst sich seit der Zeit des mittlerweile legendären Palm IIIc mit Mo-bilcomputertechnik – also seit der guten alten Zeit, wo Displays noch groß waren, man einen Stift hatte und Anwendungen 10 bis 50 Dollar kosteten .

Neben der Programmierung von Anwendungen und Spielen für Handcomputer befasse ich mich mit dem Schreiben von Fachartikeln, dem Verfassen von Fachbüchern und einer Gruppe von Webseiten zum Thema Handcomputer.

Danksagung

Zu guter Letzt sei an dieser Stelle einigen Individuen gedankt, deren Hilfe dieses Buch überhaupt erst möglich gemacht hat.

Als Erstes gilt mein Dank Ihnen, dem Käufer dieses Buchs. Erst durch ihr Vertrauen macht meine Arbeit Sinn – ich hoffe, dass sie das Buch zufriedenstellen wird.

Durch lautes Quengeln beansprucht meine Lebensgefährtin auch diesmal den zweiten Platz in dieser illustren Aufzählung. Hätte Dr. Doris Maria Kohrs ihren Aufmerksamkeits-bedarf nicht radikal gedrosselt, wäre dieses Buch nie fertiggeworden.

Page 14: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

14

Vorwort

Für die Fertigstellung gebührt ebensoviel Dank dem Team von entwickler.press: Herrn Burkart dafür, dass er die diversen Versionen meiner Texte zusammensammelte und „menschliches CVS“ spielte. Frau Kalbassi dafür, dass sie wahre Meisterleistungen im Satz vollbrachte und meine PDF-Korrekturen mühevoll und ohne Murren einpflegte. Zu guter Letzt gebührt auch Herrn Wießeckel Dank dafür, dass er mir die Weiterverwendung der bei ihm erschienenen Texte erlaubte.

Dank gebührt auch einigen Personen bei Nokia, die mir im Rahmen meiner Arbeit sehr behilflich waren.

Zu guter Letzt danke ich allen Kunden meines Unternehmens. Ohne euer Vertrauen wür-de es heute keine Tamoggemon Limited geben, und ohne Tamoggemon Limited auch kein Buch über Qt. Danke euch allen!

Page 15: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

115Qt-Entwicklung

1 Einleitung

1.1 Warum Qt?

Auch wenn man es als Programmierer nicht gerne sieht: Hardwarehersteller profitieren von proprietären Plattformen. Nicht nur im Handcomputermarkt übersteigt der Preis der verwendeten Programme oftmals den der Hardware – und Software wird so zu einem wichtigen Kundenbindungsinstrument.

Programmiersprachen wie C oder C++ erlauben seit langer Zeit, Algorithmen und „Busi-ness Intelligence“ plattformunabhängig zu gestalten. Leider gilt dies nicht für die Benut-zerschnittstelle: Jeder Betriebssystemhersteller kocht in diesem Bereich sein eigenes, zu allen anderen Systemen inkompatibles „Süppchen“.

Seit langer Zeit kämpfen Softwarehäuser gegen diesen Trend an. Es ist beispielsweise bekannt, dass diverse Mobilcomputerhäuser wie TealPoint und DataViz eigene Cross-Platform-Toolkits verwenden – leider ist deren Wartung aufwendig und teuer.

Trolltech entstand aus der Idee, diese Arbeit selbst zu übernehmen und an andere Firmen zu verkaufen. Mit ausreichend Partnern würden die Kosten pro Partner immer geringer werden und am Ende gegen Null konvergieren …der Rest ist Geschichte bzw. Handlung dieses Buchs.

1.2 Für wen ist dieses Buch?

Wie bereits angedeutet, werden Qt-Anwendungen in C++ programmiert. Aus diesem Grund sind grundlegende C++-Kenntnisse zwingend erforderlich, um von diesem Buch profitieren zu können.

Begriffe wie Klassen, Vererbung und Pointer sollten für Sie kein Problem darstellen – kom-plexere Themen wie Templates oder die Standard-Bibliothek finden, wenn überhaupt, nur am Rande Erwähnung.

In keinem Fall sind Vorkenntnisse in Qt erforderlich. Der erste Teil des Buchs zeigt alle für die praktische Anwendungsentwicklung relevanten Teile des Toolkits im Überblick – auch wenn Sie von Qt keine Ahnung haben und Mobiltelefone abgrundtief hassen, sind Sie hier richtig aufgehoben.

Page 16: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

1 – Einleitung

16

Auch die technischen Voraussetzungen sind eher moderat. Jede beliebige Windows-XP-Maschine mit mehr als 1GB RAM und 5 bis 10 GB freiem Festwertspeicher ist brauchbar – der Autor verwendet sowohl ein MSI-Wind-U100-Netbook als auch eine Zweikern-Workstation. Ein zweiter Monitor mit hoher Auflösung ist hilfreich.

Die mobilcomputerspezifischen Kapitel kann man logischerweise am besten nutzen, wenn man ein kompatibles Telefon besitzt. Mehr dazu in den jeweiligen Einleitungen.

Linux- und Mac-OS-Anwender werden im ersten Teil keine Probleme haben. Qt Crea-tor rennt auch auf ihren Maschinen, der Entwicklung steht also nichts im Weg. Im zweiten Teil sieht die Lage weniger gut aus: Da viele Mobilcomputerhersteller ihre SDKs immer noch nur unter Windows anbieten, schaut man als Nicht-Windows-User in die Röhre.

1.3 Wie soll man dieses Buch lesen?

Die ersten Kapitel des ihnen vorliegenden Buchs bauen aufeinander auf. Wenn Sie wenig Qt-Erfahrung haben, sollten Sie den ersten Teil zumindest überfliegen. Der zweite Teil ist eigenständig: Wer sich beispielsweise nur für MeeGo interessiert, kann den Symbian-Teil ohne Konsequenzen überspringen.

Allgemein sei angemerkt, dass das Auswendiglernen von Codekonstrukten und Idiomen in der produktiven Wirtschaft (außer bei der Examensvorbereitung) sinnfrei und unüb-lich ist.

Gelbe Notizzettelchen kosten im Hunderterpack Centimos und dieses Buch passt auch im engsten Flieger ins Handgepäck – warum also Klassenhierarchien auswendig lernen?

1.4 Wie funktioniert Qt?

An sich ist die Idee von plattformunabhängiger Software nicht neu: Interpretierte Spra-chen wie Java werden seit Jahren mit dem Slogan „Write once, run anywhere“ beworben. Sie erreichen dies durch das Zwischenschalten einer virtuellen Maschine, die den „Binär-code“ zur Laufzeit analysiert und ausführt:

Page 17: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Wie funktioniert Qt?

17Qt-Entwicklung

Die zur Ausführung von Java-Anwendungen erforderliche Runtime ist Abbildung 1.1: als separate Anwendung Teil des Betriebssystems

Aus dieser Architektur entstehen leider diverse Nachteile. Erstens kann der Binärcode – aus-reichend Zeit und Experimentierfreude vorausgesetzt – in der Regel wieder zu menschen-lesbarem Code dekompiliert werden. Außerdem erfordert die Interpretation Rechenleis-tung: Ein in einer Runtime laufendes Programm ist wesentlich langsamer als ein natives.

Qt geht deshalb einen anderen Weg. Die „Runtime“ ist Teil des Programms und mit die-sem während der Kompilierung zu einer Binärdatei mit Bibliotheken vereint.

Qt-Anwendungen enthalten die Runtime als BinärcodeAbbildung 1.2:

Page 18: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

1 – Einleitung

18

Zur Laufzeit ist ein Qt-Programm nicht mehr von einer nativen Anwendung zu unter-scheiden. Als Beispiel hier ein Quellcodeabschnitt aus einem Symbian-Programm, wel-ches sowohl Qt-Befehle als auch Symbian-native APIs aufruft:

QtBallZ::QtBallZ(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); // lock orientation – S60 code CAknAppUi* appUi = dynamic_cast<CAknAppUi*>(CEikonEnv:: Static()->AppUi()); if(appUi){ QT_TRAP_THROWING(appUi ->SetOrientationL( CAknAppUi:: EAppUiOrientationLandscape)); }

// some more Qt code

ApplicationPrefs::initPrefs(); this->showFullScreen(); myTimerID=startTimer(75);}

Sofern ein Programm keinen plattformspezifischen Code enthält, kann es von Plattform zu Plattform unverändert kompiliert werden – es ist ja nur von der Qt-Bibliothek abhängig.

Die eigentliche Kompilierung erfolgt in mehreren Schritten, die im Diagramm unten zu-sammengefasst werden:

Page 19: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Historisches

19Qt-Entwicklung

Im ersten Schritt erstellt qmake aus der Qt-Projektdatei ein plattformspezifisches Make-file. Dieses wird von der plattformeigenen make-Software interpretiert. Bevor jedoch der C++-Compiler auf das Projekt losgelassen wird, wird moc ausgeführt.

Dieser sogenannte Meta Object Compiler analysiert das Qt-Projekt und verwandelt nicht-standardisierte Dateien und Konstrukte in normales C++. Dieses wird danach vom platt-formeigenen C-Compiler in eine Plattformanwendung kompiliert, die von einer norma-len (nativen) Anwendung nicht unterschieden werden kann.

1.5 Historisches

Wir werden uns kurz mit der Geschichte von Qt beschäftigen. Dies mag auf den ersten Blick langweilig erscheinen, ist aber sinnvoll – es erklärt nämlich die hohe Updatefre-quenz.

1.5.1 Version 1

Die Arbeit an Version 1.0 begann im Jahre 1991 – der Name wurde aus ästhetischen Grün-den gewählt. 1994 gründeten Haavard Nord und Eirik Chambe-Eng das Unternehmen Trolltech, um Qt zu vermarkten.

Schon damals gab es die duale Lizenzierungsstrategie. Kommerzielle Entwickler kauften eine Lizenz, während nichtkommerzielle Entwickler unter der Free-Qt-Lizenz arbeite-ten.

1.5.2 Version 2

Da Free Qt nicht den Standards der FSF entsprach, wurde Qt 2.0 unter einer QPL genann-ten Lizenz veröffentlicht, die der FSF nach wie vor nicht entsprach. Da der KDE-Desktop zum damaligen Zeitpunkt immer populärer wurde, einigte man sich auf die Gründung der Free Qt Foundation.

Diese Organisation hatte die Aufgabe, die Verfügbarkeit einer quelloffenen Qt-Version „auf immerdar“ sicherzustellen. Zum Erreichen dieses Ziels wurde ihr die Lizenz erteilt, Qt unter einer BSD-Lizenz zu vertreiben, sollte Trolltech für mehr als ein Jahr keine neue quelloffene Version anbieten.

Um diesen „totalen Rechteverlust“ zu vermeiden, bringen Trolltech bzw. Nokia seither im Sechsmonatstakt neue Versionen heraus.

Page 20: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

1 – Einleitung

20

1.5.3 Version 3

Qt 3 war ein größtenteils zu Qt 2.x abwärtskompatibles Upgrade. Es brachte eine neue Datenbankengine sowie ein Übersetzungstool namens Linguist, welches im Buch später genauer behandelt wird.

1.5.4 Version 4.0

Die vierte Version des Frameworks brachte signifikante Änderungen, die teilweise mas-sive Implikationen auf die Abwärtskompatibiltät hatten. Teile von KDE mussten neu ge-schrieben werden – da die freie Lizenz auf GPL umgestellt wurde, wurden diese Ände-rungen von der Entwicklergemeinde akzeptiert.

Aus technischer Sicht wies die neue Version des Frameworks diverse Verbesserungen im Bereich des GUI-Designs auf.

1.5.5 Version 4.1

Version 4.1 brachte erstmalig eine betriebssystemunabhängige SVG-Unterstützungsbib-liothek mit.

1.5.6 Version 4.2, 4.3

4.2 und 4.3 beinhalteten diverse neue GUI-Widgets.

1.5.7 Version 4.4

In dieser Version von Qt wurde erstmalig WebKit integriert. Dies bringt den Vorteil, dass Qt-Anwendungen einen „integrierten Browser“ zur Hand haben und nicht mehr von der vom Betriebssystem gestellten Infrastruktur anhängig sind.

Weiter wurde ein Multimedia-Framework namens Phonon integriert. Es funktioniert am PC prächtig, über die mobilen Implementierungen sei der Mantel des Schweigens ge-hüllt.

1.5.8 Version 4.5

Nach der Übernahme durch Nokia wurde die offene Lizenz abermals geändert. Statt der GPL bot man Qt nun unter der LGPL an – dies ermöglichte die Entwicklung von kommer-ziellen Anwendungen auch ohne den Besitz einer kommerziellen Qt-Lizenz.

Page 21: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Lizenzrechtliches

21Qt-Entwicklung

1.5.9 Version 4.6

Version 4.6 ist die erste vollkommen unter Nokias Management entstandene Qt-Version. Sie brachte diverse Multitouch-relevante APIs mit, die bis heute nur teilweise implemen-tiert wurden. Auch wurde ein Animations-Framework integriert, welches die Spieleent-wicklung erleichtern soll.

Von großer Bedeutung ist hier die Unterversion 4.6.3. Obwohl wesentlich unzuverlässiger als 4.6.2, war sie die erste Version, welche für die Verwendung im Ovi Store freigegeben wurde.

1.5.10 Version 4.7

Qt 4.7 kann am besten als „Qt for Dummies“ beschrieben werden. Eine neue API na-mens Qt Quick erlaubt die Erstellung von Qt-Benutzerschnittstellen unter QML, einer mit JavaScript eng verwandten Sprache.

1.6 Lizenzrechtliches

Auf Kongressen taucht oft die Frage auf, ob sich der Erwerb einer kommerziellen Lizenz von Qt lohnt. Der Autor vertritt die Meinung, dass dies keinen Sinn macht.

Der einzige Vorteil der kommerziellen Lizenz ist, dass man eigene Änderungen am Frame-work nicht mit der Allgemeinheit teilen muss. Auf den ersten Blick klingt dies gut – wieso soll ich meine eigenen Bugfixes mit meinen Konkurrenten teilen?

Der Nachteil erschließt sich spätestens beim zweiten oder dritten Update. Nokia nimmt auf private Bugfixes und Änderungen keine Rücksicht. Was nicht im offiziellen Source Tree ist, muss also immer wieder eingepflegt werden – nach einiger Zeit nennt man dann ein eigenes Qt-Wartungsteam sein Eigen …

Page 22: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5
Page 23: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

223Qt-Entwicklung

2 Erste Schritte

Nach den eher theoretischen Betrachtungen im ersten Kapitel geht es hier voll zur Sache. Am Ende dieses Kapitels haben Sie Ihre erste Qt-Anwendung fertig und das Signal-Slot-System verstanden.

2.1 Qt Creator installieren

An sich kann Qt mit fast jeder IDE kombiniert werden. Eclipse, Visual Studio oder was auch immer: Die Wahrscheinlichtkeit, dass Trolltech dafür ein Plug-in anbietet, ist hoch. Trotzdem bietet das Unternehmen auch eine eigene Entwicklungsumgebung namens Qt Creator an.

Da davon auszugehen ist, dass neue Features der Plattform erst in Qt Creator integriert werden, lohnt es sich, auf diese Entwicklungsumgebung umzusteigen. Erfreulicherweise ist Qt Creator kostenlos und kann unter http://qt.nokia.com/downloads/ –> Qt SDK for Win-dows heruntergeladen werden. Traditionell installiert das SDK gleich die Mobiltoolchains – wer das nicht will, kann sie manuell deselektieren.

Nach der Installation des Qt SDK finden sich diverse neue Programme im Startmenü. Wichtig sind allerdings nur Qt Assistant, Qt Creator, Qt Linguist und die Qt Command Line – betrachten wir sie nacheinander.

2.1.1 Qt Assistant

Qt Assistant ist die Online-Hilfe der Qt-Plattform. Einmal gestartet, präsentiert das Pro-gramm eine Liste von Themen und lässt sich wie jedes andere Online-Hilfesystem bedie-nen.

Wenn man eine Funktion sucht, so gibt man ihren Namen ohne Klammern in das Suchfeld ein und klickt ihren Eintrag an. Das Programm fragt danach wie im Dialog unten gezeigt, um welche Klasse es geht:

Page 24: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

2 – Erste Schritte

24

Die Funktion accept kommt in mehr als einer Klasse vorAbbildung 2.1:

2.1.2 Qt Creator

Qt Creator stellt die eigentliche Entwicklungsumgebung dar, in der Qt-Programme ent-worfen, kodiert und getestet werden.

2.1.3 Qt Linguist

Qt Linguist dient zur Übersetzung von Programmen. Ihm ist ein eigenes Kapitel in diesem Buch gewidmet.

2.1.4 Qt Command Line

Abschließend sei noch kurz auf die Qt Command Line hingewiesen:

Im Qt Command Prompt sind die PATH-Variablen der Qt-Installation voreingestelltAbbildung 2.2:

Page 25: Qt-Entwicklung - download.e-bookshelf.de · Qt-Entwicklung für Symbian, Android und Desktop ... 2.3.2 .ui-Dateien 29 ... 9.1 Wie sieht Symbian aus? 135 9.1.1 S60v3 136 9.1.2 S60v5

Ein neues Projekt

25Qt-Entwicklung

Dabei handelt es sich um ein spezielles Command-Fenster, in dem Qt-Befehle direkt auf-gerufen werden können. Dies ist insofern sinnvoll, als Qt sich selbst nicht in die PATH-Variable des Systems einträgt …

2.2 Ein neues Projekt

Nun aber genug drumherum geredet – es ist an der Zeit, unser erstes Programm zu ent-werfen. Starten Sie Qt Creator – die IDE wird wie im Bild unten gezeigt aussehen:

Qt Creator steht bereit, um Sie bei Ihren programmatischen Verbrechen zu unterstützenAbbildung 2.3:

Klicken Sie im Start-Wizard auf Projekt erstellen, um ein neues Projekt zusammenzubau-en. Alternativ können Sie die Projekterstellung auch aus dem Menü anstoßen.

Im daraufhin erscheinenden Wizard wählen Sie Qt-GUI-Anwendung.