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

Slides:



Advertisements
Ähnliche Präsentationen
Vortrag Code-Dokumentation
Advertisements

programmiert April-Juni 2003 von Knut Riechmann
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Eclipse.
Datenbanken Einführung.
Alternativen für die Entwicklung von grafischen Oberflächen in Java
„Ansicht Arbeitsbereich“ ist die nutzerspezifische Ansicht, in der alle Dokumente aufgelistet sind, die dem angemeldeten Benutzer zugeordnet sind. D.h.
1 Spezielle Packages des Java SDK (1.4) java.nio.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Datenbankzugriff im WWW (Kommerzielle Systeme)
SAP R/3 - Speichermanagement
Atmel AVR JTAG Einführung
Colibi Bibliothekssystem der Computerlinguistik. Einführung Motivation Was braucht Colibi? Software Datenbankdesign.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Introducing the .NET Framework
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
Kurs Schreiben 1/12 Dr. Barbara Hoffmann LiteraturKompetenz Formatiertes wissenschaftliches Schreiben Der Kurs ist zur allgemeinen Information.
Einführung in Visual C++
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
Einführung und Überblick
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
PHProjekt – eine open source Projektmanagementsoftware
Entwicklung verteilter eingebetteter Systeme - Einführung
AWT und JFC Abstract Windowing Toolkit
Gegenstand EDV Thema: Informative Webseiten
EXCEL PROFESSIONAL KURS
EIDAMO ® Frontend Das neue Frontend gibt Ihnen 100% Flexibilität, und weil es auf verschiedene Framework Biblieotheken basiert, können Sie praktisch.
Seminar XML-Technologien: VoiceXML/SMIL 1 Was ist SMIL ? Synchronized Multimedia Integration Language Ausprache wie das englische Wort smile {smaIl} August.
Programmiermethodik Übung 6
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
HTML-Editoren Eine Präsentation von Erik Kulisch.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Reasoner Semantische Interoperabilität
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Chipkarten Projekt Die Multi-Abo-Karte WS 2002 / 2003.
..:: MULTI – ABO – KARTE ::.. Projektstudium Chipkarten SS 2003 Vortragende: Katrin Kampfmann, Alexander Lamprati (PM)
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
EP Media Group SiteKist CMS Version 6.9. ©2014 EP Media Group Internet:
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Java Server Pages Sergej Keterling
Thread Synchronisation in JAVA
Programmierung 1. Einführung Seite 1
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
OSS und GUIs Übersicht Allgemeines (Robert) X Window System (Claudius) GTK/GNOME (Robert)
Programmierpraktikum Java SS 2005
Erste Schritte in DELPHI
Eine Entwicklungsumgebung für Free-Pascal Peter G. Poloczek, M5543
Content Management System
Kommandozeile und Batch-Dateien Molekulare Phylogenetik – Praktikum
Kaseya Virtual System Administrator Produkt Update 7.0 Rocco van der Zwet Copyright ©2014 Kaseya 1.
Multimedia in Java Thomas Witschel, Kerstin Steinert & Erik Reinhard.
System zur Videokompression Simone Buzzi Simon Häne Giuseppe Schiavello.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Datenbanken im Web 1.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
Der Taskmanager ist Bestandteil des Betriebssystems, der als Prozessmanager Prozessmanager unter anderem die aktuell laufenden Programme und Prozesse.
, Claudia Böhm robotron*SAB Anwendungsentwicklung mit dem Java und XML basierten Framework robotron*eXForms Simple Application Builder.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
4. Graphische Oberflächen mit Qt-Framework. Was ist Qt? ● gesprochen englisch cute = hübsch ● C++-Klassenbibliothek ● Erweitert C++ um zusätzliche Features.
Einführung DI Harald Sander.
Programmiermethodik Übung 7
 Präsentation transkript:

1 Einführung in Qt von Stephan Hellenbrandt

2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm Layout, Multithreading, Datenbanken Vergleich: Anforderungen Qt, WxWidgets, Swing Fazit

3 Motivation Bachlorarbeit: Entwicklung einer graphischen Oberfläche für einen Positrionen-Emmisions- Tomograph Einarbeitung in Qt Gibt es vergleichbare Frameworks wie Qt ?

4 Entwicklung und Geschichte von Qt Entwickelt von Haavard Nord und Eirik Chambe-Eng im Jahr 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 und wird unter der LGPL Lizenz vertrieben

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 Beispielprogramm

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 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 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 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 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 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 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 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 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 Datenbanken Verbindung zu einer Datenbank

17 Datenbanken Anfrage an die Datenbank

18 Datenbanken Transaktion auf Datenbanken

19 Vergleich von verschiedenen Gui-Frameworks Im folgenden Abscnitt werden die drei folgenden Gui – Frameworks miteinander verglichen Qt WxWidgets Swing

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 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 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 Vergleich WxWidgets C++ Bibliothek zur Gui-Entwicklung aktuelle Version Beispiel WxWidgets

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 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 Vergleich Swing Swing ist eine Java Graphikbibliothek, die von Sun Mircosoft entwickelt wurde baut auf AWT auf und ist plattformunabhängig Beispiel:

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 Vergleich Swing Optische Anpassung: Swing bietet keine nativen Styles des Betreibssystem an sondern nur nachempfundene der Standardstyle ist Motif

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 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 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