4. Graphische Oberflächen mit Qt-Framework. Was ist Qt? ● gesprochen englisch cute = hübsch ● C++-Klassenbibliothek ● Erweitert C++ um zusätzliche Features.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
Softwareentwicklung für Android
Java News & Music Der Chat
Threads Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Programmieren mit JAVA
Das Java-Hamstermodell
Einführung in Visual C++
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Informatikunterricht mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Zurück zur ersten Seite SEP Entwurf und Implementierung einer effizienten Rechenstruktur zur Baumdarstellung mittels Java-Texteditoren Betreuer : Matthias.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Java und Eclipse.
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.
App-Entwicklung mit HTML5, CSS und JavaScript
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Objectives Verstehen was unterDelegate verstanden wird
Das Command Muster Deimbacher, Gölles.
Dedizierte Systeme Typo3 Installation Dedizierte Systeme – Typo3 Installation – Christoph Stollwerk IT Zertifikat der Philosophischen Fakultät WS 2008/2009.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Einführung in die Programmierung
1 Einführung in Qt von Stephan Hellenbrandt. 2 Inhaltsverzeichnis Einleitung: Motivation Geschichte von Qt Bibliothek Einführung in Qt: Beispiel-Programm.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Programmieren in C / C++ Software Serial, Bluetooth
Objektorientierte Programmierung
Vererbung.
Hello World! Javakurs 2013 Arne Kappen
Venusspiegel und Marsschild
Einführung in Qt Empfohlene Version 4 Empfohlene Pakete: qt4-default
OOP II.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Arguments to main() int main(int argc, char *argv[]) { int i;
Die Klasse Vielfrass in Java
Ein kurzer Überblick Thomas Karp
Grundkurs Informatik 11-13
 Präsentation transkript:

4. Graphische Oberflächen mit Qt-Framework

Was ist Qt? ● gesprochen englisch cute = hübsch ● C++-Klassenbibliothek ● Erweitert C++ um zusätzliche Features ● bietet plattformübergreifende Programmierung grafischer und textbasierter Anwendungen ● Ursprünglich entwickelt von Fa. Trolltech ● Trolltech wurde 2008 von Nokia aufgekauft ● Ab v4.5 unter LGPL Lizenz veröffentlicht

Unterstützte Plattformen ● Unix/ Linx (mit X Window System) ● Mac OS X ● Windows ● Windows CE ● OS/2 ● Symbian OS (Nokia Handy) ● Maemo (Nokia Internet Tablets) ● MeeGo (Smartphones, tablets, Netbooks)

Erweiterung von C++ ● Präprozessor MOC (meta object compiler) ● Übersetzt Meta-Dateien in C++-Code ● Neue Features –Signale und Slots –Reflexion (Anweisungen zur Laufzeit veränderbar) –Generierung von GUI-Code –Verschiedene APIs (JAVA, Python, Ruby, C#,...)

Hello World 1)#include 2) 3)int main(int argc, char **argv) { 4) QApplication app(argc, argv); 5) QWidget window; 6) window.setWindowTitle("Qt4- Example"); 7) QLabel *label = new QLabel("Hello World!"); 8) label->setAlignment(Qt::AlignCenter); 9) QPushButton *button = new QPushButton("&Exit"); 10) QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit())); 11) QVBoxLayout *layout = new QVBoxLayout; 12) layout->addWidget(label); 13) layout->addWidget(button); 14) window.setLayout(layout); 15) window.show(); 16) 17) return app.exec(); 18)}

Signal-Slot Konzept ● Alternative zu Callback-Funktionen ● Sicherer durch Laufzeit-Typüberprüfung ● Zustellung auch zwischen Threads ● In Entwicklungsumgebung integriert ● Verbindung mittels connect(Sender, Signal, Empfänger, Slot) ● Klasse von QObject abgeleitet ● Klasse beginnt mit Q_OBJECT

Signale 1)class Sender : public QObject 2){ 3) Q_OBJECT 4)signals: 5) void MySignal(); 6)public: 7) Sender(); 8)} 9)#include sender.h 10)void Sender::Sender() { 11) emit MySignal(); 12)} Oberklass e Makro mit Signalverarbeitung Signaldefinitio n Konstruktordeklaratio n Bereich für Signale Bereich öffentliche Methoden Konstruktordefinitio n Signal senden sender.h sender.cpp

Slots 1)class Receiver : public QObject 2){ Q_OBJECT 3)slots: 4) void MySlot(); 5)public: 6) Receiver(); 7) Sender MySender; 8)} 9)#include receiver.h 10)void Receiver::Receiver() { 11) connect(&MySender, SIGNAL(MySignal), 12) this, SLOT(MySlot())); 13)} 14)void Receiver::MySlot() {...} Oberklass e Makro mit Signalverarbeitung Slotdeklaratio n Konstruktordeklaratio n Bereich für Slots Bereich öffentliche Methoden Konstruktordefinitio n Verbinden receiver.h receiver.cpp Sendendes Objekt Slotdefinitio n

TestSerialIO ● Terminalprogramm für Qt ● OpenSource ● Basis für GUI-Apps mit SerialIO (Terminal als Debugfeature) ● Einfache Anbindung an µC ● Schnelle Frontend Entwicklung ● Bereits Teil von Tricopter1 ground-control/Test_SerialIO/

TestSerialIO

● Test mittels zweier Terminals –zwei USB-Seriell Wandler anschliessen –Nullmoden verbindet beide seriellen Ports –TestSerialIO im Debugger starten (F5) –TestSerialIO manuell starten (Dateimanager) Pfad: ground-control/Test_SerialIO/Test_SerialIO-build-desktop –Schnittstellen öffnen –Befehle manuell in ein Terminal eingeben –Debuggen im anderen Terminal

TestSerialIO