Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Einführung in Qt von Stephan Hellenbrandt. 2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Einführung in Qt von Stephan Hellenbrandt. 2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm."—  Präsentation transkript:

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


Herunterladen ppt "1 Einführung in Qt von Stephan Hellenbrandt. 2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm."

Ähnliche Präsentationen


Google-Anzeigen