Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Babette Sternberg Geändert vor über 8 Jahren
1
1 Einführung in Qt von Stephan Hellenbrandt
2
2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm Layout, Multithreading, Datenbanken Vergleich: Anforderungen Qt, WxWidgets, Swing Fazit
3
3 Motivation Bachlorarbeit: Entwicklung einer graphischen Oberfläche für einen Positrionen-Emmisions- Tomograph Einarbeitung in Qt Gibt es vergleichbare Frameworks wie Qt ?
4
4 Entwicklung und Geschichte von Qt Entwickelt von Haavard Nord und Eirik Chambe-Eng im Jahr 1991 1993 stellten sie den ersten graphischen Kernel fertig und gründeten ihr Unternehmen Quasar Technologie, später Trolltech 1996 stellten sie Qt 1.0 fertig Im Jahr 2008 kaufte Nokia Trolltech Aktuell befindet sich Qt in der Version 4.7.1 und wird unter der LGPL Lizenz vertrieben
5
5 Aufbau der Qt Bibliothek Ab Version 4.0 ist die Qt-Bibliothek in Module unterteilt Das Core-Modul bietet die Grundlage für alle nicht graphischen Aktivitäten Das Gui-Modell beinhaltet die Funktionen um graphische Anwendungen schreiben zu können Durch das Multithreading-Modul kann der Entwickler parallele Anwendungen schreiben Mithilfe vom 2D Graphics Canvas- Modul kann der Entwickler graphische 2D Oberflächen verwalten und Interaktion auf diesen ausführen.
6
6 Beispielprogramm
7
7 Das Meta-Object System Stellt das Signal& Slot System zur Verfügung Sammelt Laufzeittypinformationen und dynamische Eigenschaften Dabei generiert der Meta-Object-Compiler(moc) bei allen Klassen, die durch das Makro Q_Object gekennzeichnet sind Meta-Object-Code
8
8 Layout Ohne Layoutmanager Absolute Design Den Labels, Buttons und anderen Widgets werden feste Positionen zugeordnet Der Anwendung wird eine bestimmte Größe auf der x- und y- Achse zugewiesen Nachteil: - das Fenster kann nicht vergrößert werden - wenig flexibel, außerdem bei Änderungen ziemlich aufwendig
9
9 Layout Mit Layoutmanager QHBoxLayout: alle Widgets werden horizontal nebeneinander angeordnet QVBoxLayout: alle Widgets werden vertikal nebeneinander angeordnet QGridLayout: alle Widgets werden in einer Tabelle angeordnet, wobei der Entwickler die Zeilen und Spaltenzahl sowie den Raum der jeweiligen Spalten angibt QFormLayout: Hierbei wird ein Gitter mit zwei Feldern nebeneinander angelegt, wobei das erste Feld immer ein Label ist. Dies ist besonders praktisch um verschieden Eingaben abzufragen
10
10 Multithreading Threads Thread wird von QThread abgeleitet In der run() Methode wird der Code in einen neuen Thread abgearbeitet Mit Thread.start() wird der Thread gestartet Mit Thread.stop()kann er natürlich auch beendet werden
11
11 Multithreading Synchonisierung von Threads Mit dem QMutex wird verhindert, dass mehrere Threads auf einen globale Variabel zugreifen Mutex.lock() blockiert die Abarbeitung andere Threads Mutex.unlock() gibt den kritischen Bereich wieder frei
12
12 Multithreading Synchonisierung von Threads Effektiver als der Mutex ist der QReadWriteLock Bei lockforRead werden alle schreibvorgänge von anderen Threads blockiert, aber nicht andere Lesevorgänge Mittels lockforWrite werden alle Lese- sowie Schreibevorgänge blockiert
13
13 Multithreading Synchronisation von Threads QSemaphore Diesen werden eine bestimmte Anzahl von Threads übergeben Mit acquire wird die Anzahl der Threads die noch in den kritischen Bereich dürfen vermindert Mit release werden die Threads wieder freigegeben
14
14 Multithreading MasterWorker Konstrukt heißt in Qt QWaitCondition mit wakeOne() bzw. wakeAll() werden die WorkerThreads aufgerufen Durch den QMutexLocker() können globale Variablen Threadsicher gemacht werden
15
15 Datenbanken Bei großen Datenmengen ist es sinnvoll Datenbanken zu benutzen Qt unterstützt verschiedene Datenbanktreiber Sollte Qt den Datenbanktreiber nicht unterstützen, kann alternativ auch ein eigener Treiber geschrieben werden dieser muss von der Klasse QSqlDriver abgeleitet sein
16
16 Datenbanken Verbindung zu einer Datenbank
17
17 Datenbanken Anfrage an die Datenbank
18
18 Datenbanken Transaktion auf Datenbanken
19
19 Vergleich von verschiedenen Gui-Frameworks Im folgenden Abscnitt werden die drei folgenden Gui – Frameworks miteinander verglichen Qt WxWidgets Swing
20
20 Kriterien zum Vergleich Programmierung eines Beispiel-Programms Größe und Umfang der Bibliothek Eine Übersichtliche Gestaltung und intuitive Benutzung des Gui-Designers Lizenzkosten Optische Anpassung an das Betriebssystem
21
21 Vergleich Qt Programmierung wurde schon gezeigt Die Bibliothek von Qt: je nach Betriebssystem von 200 bis 400 MByte mit Beispielen unterstützt Gui-Anwendungen, Multithreading, 2D und 3D Anwendungen und vieles mehr Gui- Designer: Qt- Designer aus der IDE Qt-Creator kann auch unter Visual Studio benutzt werden speichert seine Form Dateien im XML Format ab
22
22 Vergleich Qt Lizenzkosten: wird unter der kostenfreien LGPL und einer kommerziellen Lizenz vertrieben die Kosten für die kommerzielle Lizenz beginnt bei 2.995€ Optische Anpassung: benutzt die nativen Betriebssystemstyles kann aber auch benutzerdefinierte Styles benutzen
23
23 Vergleich WxWidgets C++ Bibliothek zur Gui-Entwicklung aktuelle Version 2.8.11 Beispiel WxWidgets
24
24 Vergleich WxWidgets Die Bibliothek von WxWidgets: Ist etwa beim Download 10 bis 30 MByte groß Nach Entpacken 130 MByte beinhaltet Klassen zur graphischen Programmierung, für Multithreading und Netzwerk Programmierung Der Gui-Designer: hat keinen eigen offiziellen graphischen Entwickler deshalb habe ich den WxFormBuilder benutzt in der Version 3.2Beta erstellt nach Benutzereingaben eine C++ oder XML Datei die in eine Entwicklungsumgebung exportiert werden kann
25
25 Vergleich WxWidgets Lizenzkosten: liegt unter der kostenfreien G-LGP Lizenz vor Optische Anpassung: bietet wie Qt seinen Entwickler verschiedene Styles an auch die nativen Styles des Betriebssystem
26
26 Vergleich Swing Swing ist eine Java Graphikbibliothek, die von Sun Mircosoft entwickelt wurde baut auf AWT auf und ist plattformunabhängig Beispiel:
27
27 Vergleich Swing Die Bibliothek von Swing: Swing ist Bestandteil des JDK seit Version 1.2 Gui Builder: es gibt viele verschiedene Gui Builder ich habe mich für Matisse, der standardmäßig in Netbeans vorhanden ist entschieden ist einfach und übersichtlich aufgebaut Lizenzkosten: wird mit dem JDK unter der GPL Lizenz veröffentlich
28
28 Vergleich Swing Optische Anpassung: Swing bietet keine nativen Styles des Betreibssystem an sondern nur nachempfundene der Standardstyle ist Motif
29
29 Fazit Vorteile Qt: Übersichtlicher und intuitiver Designer Qt Creator ist als Entwicklungsumgebung sehr vielseitig Benutzt native Styles des Betriebssystem Nachteil Qt: Kommerzielle Lizenz ist sehr teuer
30
30 Fazit Vorteile WxWidgets: Anwendung kann unter jeder Lizenz gestellt werden Benutzt native Styles des Betriebssystem Übersichtlicher und intuitiver Designer Nachteile WxWidgets: Keinen integrierten Gui-Entwickler Jedem Objekt muss eine eindeutige Id zugewiesen werden
31
31 Fazit Vorteile Swing: Übersichtlicher und intuitiver Designer ist Bestandteil des JDK Darf kommerziell benutzt werden Nachteil Swing: Keine nativen Betriebssystemstyles Swing ist nicht threadsicher
32
32
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.