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

Post on 24-Sep-2020

4 views 0 download

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

Qt Workshopvon Zafer Dogan

Teil 0Übersicht

Übersicht

Was ist Qt?

Einführung

Qt Programmierung

Pros/Cons

Ausblick

Abschluss

Ü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

Übersicht- Qt Programming (Teil 2)

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

Übersicht- Qt Programming (Teil 3)

→ Model/View Programming⇀ Custom Widgets

→ Multithreading→ Prozesse

Übersicht- Qt Programming (Teil 4)

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

Übersicht- Qt Programming (Teil 5)

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

→ Qt Mobile API

Übersicht- Pros / Cons

→ Was spricht dafür, was dagegen

- Ausblick- Abschluss und Danksagung

Teil 0Was ist Qt?

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

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

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

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

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!

Teil 0Einführung

Setup Qt mit Visual Studio

Hello World Beispiel

Vorstellung SA Zafer Dogan

Setup Qt mit Visual Studio

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

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

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

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

auswählen

Hello World Beispiel

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

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

→ Sollten automatisch generiert worden sein!

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"));⇀ }

Vorstellung SA Projekt Zafer Dogan

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

Vorstellung SA Projekt

Vorstellung SA Projekt

Vorstellung SA Projekt

Vorstellung SA Projekt

Vorstellung SA Projekt

Beim nächsten Mal...

Teil 1Qt Programming

Qt Datenstrukturen

Qt Widgets und GUI Elemente

QML / Qt Designer

Danke für die Aufmerksamkeit