Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist...

34
Qt Workshop von Zafer Dogan

Transcript of Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist...

Page 1: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Qt Workshopvon Zafer Dogan

Page 2: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Teil 0Übersicht

Übersicht

Was ist Qt?

Einführung

Qt Programmierung

Pros/Cons

Ausblick

Abschluss

Page 3: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Was ist Qt? (Teil 0)- Einführung (Teil 0)

→ Setup Qt mit Visual Studio→ “Hello World” - Beispiel→ Vorstellung SA Projekt Zafer Dogan

- Qt Programming (Teil 1)→ Qt Datenstrukturen

⇀ QList, QMap, QString etc.→ Qt Widgets und GUI Elemente→ QML / Qt Designer

Page 4: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Qt Programming (Teil 2)

→ Das Meta - Objekt System→ Das Property System→ Das Event System→ Signals and Slots

Page 5: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Qt Programming (Teil 3)

→ Model/View Programming⇀ Custom Widgets

→ Multithreading→ Prozesse

Page 6: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Qt Programming (Teil 4)

→ Networking und Konnektivität⇀ Netzwerkkommunikation⇀ Interprozesskommunikation⇀ Websockets⇀ Qt WebEngine (WWW Support)⇀ Serial Port Communication

Page 7: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Qt Programming (Teil 5)

→ Qt Graphics⇀ 2D, 3D, OpenGL⇀ Printing, Images, etc.

→ Qt Mobile API

Page 8: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Übersicht- Pros / Cons

→ Was spricht dafür, was dagegen

- Ausblick- Abschluss und Danksagung

Page 9: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Teil 0Was ist Qt?

Page 10: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Was ist Qt?- Entwickelt von Havaard Nord und Eirik Chambe-Eng- Gründung Trolltech 1994- Aussprache “Cute”, vom Englischen “süss”- Verkauf Qt an Nokia in 2008 für 150 Mio $- Als Open - Source unter dem Namen Qt Project im Jahr 2011

veröffentlicht→ Entwicklung der lizenzierten Version an Firma Digia für unbekannte Summe

weitergereicht

- Verlagerung der Qt Entwicklung, The Qt Company, Vereinigung der Entwicklung Open - Source und lizenzierte Version im Jahr 2014

Page 11: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Was ist Qt?- GUI - Toolkit für Applikationsentwicklung (Desktop)- Basiert auf C++

→ Bietet zahlreiche Anbindungen für andere Programmiersprachen⇀ Python (PyQt), C# (QtSharp), Java (Qt Jambi), etc.

- Cross-Platform Unterstützung→ Eine Code - Basis, mehrere Zielplattformen

⇀ “Write once, compile anywhere”→ Spezialität des Qt Frameworks→ Linux, Windows, iOS, Android etc.

- Open-Source und Lizenz - Versionen vorhanden→ Bestimmte Bibliotheken Open-Source (GPL, LPGL), andere nur mit Lizenz

- Eigene IDE (Qt Creator, kostenpflichtig)→ Reichhaltige IDE auf die Entwicklung mit Qt zugeschnitten (Profiling, Refactoring etc.)

Page 12: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Was ist Qt?- UI Designer (freeware)

→ Qt Designer⇀ Erzeugt QML (Qt Markup Language) und nötige Header - Dateien für Code

automatisch

- Visual Studio Anbindung→ Qt Addin

⇀ Auto - Generation der Qt - Dateien, wie z.B moc - Files→ Funktioniert mit Visual Studio Community Version

⇀ Optimal für kostenfreie Entwicklung

- Bietet Introspektion für C++ mit moc - Files→ Generierte Files sind C++ Standard konform

- Einfaches Signals and Slots Konzept für die Anbindung UI zum Code→ Funktion ähnlich zum Observer - Pattern

Page 13: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Was ist Qt?- Bietet Komponenten an für:

→ Internationalisierung→ XML Serialisierung→ Media→ Netzwerk

⇀ WebEngine, WebSockets, etc.→ Etc.

- GUI’s mit “native” Aussehen- Grafikkartenbasierte GUI Elemente (wie z.B. für OpenGL etc.)

→ 2D, 3D, 3D mit OpenGL

Page 14: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Was ist Qt?- Software, die mit Qt entwickelt worden sind

→ Opera ( Browser)→ Skype (Chat - Client)→ MuseScore (OpenSource Music Notation Software)→ Autodesk Maya→ Mathematica→ VLC Media Player→ WireShark→ Und noch viele mehr!

Page 15: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Teil 0Einführung

Setup Qt mit Visual Studio

Hello World Beispiel

Vorstellung SA Zafer Dogan

Page 16: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Setup Qt mit Visual Studio

Page 17: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Setup Qt mit Visual Studio- Was wir brauchen:

→ C++ Compiler⇀ http://www.mingw.org/category/wiki/download

→ Visual Studio 2015⇀ Community Version, muss eventuell von Third Party Anbietern geladen werden oder

per Abonnement von der Visual Studio Seite (aktuelle Version ist 2017)⇀ Für Mac: Visual Studio 2017 hat auch eine Mac Version, aber ob Qt5 Addin für

diesen existiert, muss überprüft werden→ Qt Addin (Qt5)

⇀ In Visual Studio 2015 unter Extras > Extensions und Updates● Im Suchfeld (Online - Suche) Qt5 eintippen und Addin installieren● Bei Neustart sollte nun ein neues Menüfeld erscheinen (Qt5)

→ Qt Version 5.6.0 (32/64bit)⇀ http://download.qt.io/official_releases/qt/5.6/5.6.0/qt-opensource-windows-x86-msvc2015-5.6.0.exe

⇀ http://download.qt.io/official_releases/qt/5.6/5.6.0/qt-opensource-windows-x86-msvc2015_64-5.6.0.exe

Page 18: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Setup Qt mit Visual Studio- Installation Qt:

→ Einfach Anweisungen befolgen

- Nach der Installation von Qt, müssen wir nur noch dem Qt5 Addin in Visual Studio sagen, wo unser qmake.exe sich befindet→ Sollte im bin Dossier der Installation sein→ Unter QT5 Menüfeld, Qt Options, neue Version hinzufügen und das Verzeichnis mit bin -

Folder angeben, in dem sich das qmake.exe befindet (Qt Options braucht den ganzen Pfad, nicht den bin - Folder alleine, z.B. bei mir: C:\Qt\Qt5.6.0\5.6\msvc2015

- Dieser Folder muss auch in den Umgebungsvariablen eingetragen werden (Systemvariabel: QTDIR=C:\Qt\Qt5.6.0\5.6\msvc2015)→ Die automatisch generierten include / linker Einträge sind vom QTDIR Variablen abhängig,

manchmal trägt Visual Studio diesen ins .vcxproj ein, aber ist nicht zuverlässig, darum Als Systemvariable definieren um sicher zu gehen

Page 19: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Setup Qt mit Visual Studio- Unter Windows

→ Muss man zusätzlich noch das Qt Folder platforms, dass unter dem FolderPlugins sein sollte, der sich im gleichen Folder wie dem bin - Folder befindet, zum Release/Debug Output folder (da wo das .exe generiert wird) hinkopieren

Page 20: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Setup Qt mit Visual Studio- Ab nun können wir unter “File > New Project..” Qt Projekte

auswählen

Page 21: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Hello World Beispiel

Page 22: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Hello World - Beispiel- Wir erstellen ein neues Qt Application Projekt

Page 23: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Hello World - Beispiel- Im Main.cpp brauchen wir folgende Zeilen:

→ Sollten automatisch generiert worden sein!

Page 24: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Hello World - Beispiel- Wenn wir das Projekt jetzt “builden” und starten, erscheint ein

Leeres Fenster- Damit wir ein “Hello World” Beispiel haben, wollen wir nun den Titel

Dieses Fenster mit “Hello World” setzen→ Dafür im Fenster-Konstruktor mit folgender Zeile ergänzen

⇀ HelloWorld_Example::HelloWorld_Example(QWidget *parent)⇀ : QMainWindow(parent)⇀ {⇀ ui.setupUi(this);⇀ this->setWindowTitle(QString("Hello World"));⇀ }

Page 25: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt Zafer Dogan

Page 26: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt- Logging Tool GUI

→ Zum bestehenden Logging Library soll eine GUI entwickelt werden, in der die Logs angezeigt werden und gefiltert werden können

→ Die Logs werden per Netzwerk übertragen→ Können in sehr kleinen Zeitabschnitten eintreffen (untere Grenze 20ms)→ GUI muss unter Last responsive bleiben

Page 27: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt

Page 28: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt

Page 29: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt

Page 30: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt

Page 31: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Vorstellung SA Projekt

Page 32: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Beim nächsten Mal...

Page 33: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Teil 1Qt Programming

Qt Datenstrukturen

Qt Widgets und GUI Elemente

QML / Qt Designer

Page 34: Qt Workshop · 2017. 6. 23. · Qt Workshop von Zafer Dogan. Teil 0 Übersicht Übersicht Was ist Qt? Einführung Qt Programmierung ... Windows, iOS, Android etc. - Open-Source und

Danke für die Aufmerksamkeit