Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "4. Graphische Oberflächen mit Qt-Framework. Was ist Qt? ● gesprochen englisch cute = hübsch ● C++-Klassenbibliothek ● Erweitert C++ um zusätzliche Features."—  Präsentation transkript:

1 4. Graphische Oberflächen mit Qt-Framework

2 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

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

4 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#,...)

5 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)}

6 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

7 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

8 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

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

10 TestSerialIO

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

29 TestSerialIO


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

Ähnliche Präsentationen


Google-Anzeigen