Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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