Deko-Banner


C++ - Programmierung:
Grundlagen und Anwendungen mit der Qt-Klassenbibliothek (4SWSt, 6 LPs)

c++-qt

Veranstalter: Fakultät für Physik, Dr. Fritz Wünsch;      Dozent: Peter Georg

  1. Voraussetzungen
  2. Anmeldung über LSF
  3. Scheinanforderungen
  4. FlexNow
  5. Gliederung
  6. Vorlesung und Übung
  7. Qt im CIP-Pool
  8. Projektarbeit
  9. Kursunterlagen
  10. Bilder von früheren Projekten
  11. Aktuelle Version von Qt
  12. Literatur
  13. Nützliche Links

Dieser Kurs richtet sich an alle, die bereits Vorkenntnisse in der Programmiersprache C erworben haben und Einblicke in die objektorientierte Programmierung gewinnen wollen. Idealerweise wird ein Besuch unseres Grundkurses Programmieren in C und C++ empfohlen, der Qt-Kurs kann aber auch völlig unabhängig davon besucht werden.
Er verfolgt zwei Ziele:
  • Erlernen der objektorientierten Programmiertechniken von C++
  • Einüben dieser Techniken am Beispiel einer fertigen Klassenbibliothek
Als Klassenbibliothek haben wir Qt ausgewählt - vielen ist sicherlich das Desktop Environment KDE auf Linux bekannt, welches auf der Qt Bibliothek basiert. Somit bekommen Sie im Kurs zusätzlich eine praxisorientierte Einführung in die grundlegenden Techniken der GUI-Programmierung. Mit Qt können Sie leicht plattformübergreifende graphische Anwendungen erstellen. Die Nutzung ist für Unix-ähnlichen Betriebssysteme (Linux, Mac OS X, ...) sowie für Microsoft Windows unter diversen Lizenzen möglich:
  • GPL v3
  • LGPL v2.1
  • LGPL v3
  • Proprietär: diverse kommerzielle Versionen mit erweiterem Support

Spezielle Verwendung findet Qt unter anderem für die Softwareentwicklung von Hybrid Applikationen für mobile Funktelephone die etwa auf Sailfish OS, Maemo, MeeGo, Symbian oder Windows Mobile setzen. Das Entwickeln für Windows RT, Android oder iOS ist ebenfalls möglich.

Voraussetzungen und Vorkenntnisse für den Besuch dieser Veranstaltung

  • passable Programmierkenntnisse in C (der Umgang mit Pointer sollte vertraut sein)
  • Umgang mit Debian 8 und/oder Windows 8.1 (für den Kurs werden die Rechner im Windows-CIP-Pool und Linux-CIP-Pool zur Verfügung gestellt)
  • alternativ kann ein eigener Rechner (vorzugsweise Laptop) mitgebracht werden, da alle verwendeten Werkzeuge plattformübergreifend und quelloffen sind
  • Englischkenntnisse, da die Dokumentation nur in Englisch verfügbar ist

Anmeldung über LSF

Um am Kurs teilnehmen zu können sollten Sie sich sofern möglich über die LSF Plattform anmelden. Achten Sie darauf, dass Sie Ihr aktuelles Semester an die Vorlesung anpassen.

Scheinanforderungen

Als Scheinkriterium gelten folgende Punkte:
  • Anwesenheit in den Übungen und Nachweis einer gelösten Übungsaufgabe
  • Erstellen eines kleinen Abschlussprojektes

FlexNow

Studenten, die einen FlexNow-Eintrag benötigen, müssen innerhalb der Kurstage ihre FlexNow-Anmeldung erfolgreich ausführen. Dieser Kurs ist unter dem Namen Programmieren portabler graphischer Anwendungen in der Rubrik Studienbegleitende IT-Ausbildung eingetragen. Weitere Modularisierungen für andere Studiengänge sind möglich. Sollen die erworbenen Leistungspunkte für die studienbegleitende IT-Ausbildung verwendet werden, muss der Schein benotet ausgestellt werden. Papierscheine werden nur noch für Diplom- und FH-Studenten ausgestellt.

Gliederung

  1. C++ (Teil 1) c++
    • Grundlagen der Programmiersprache C++ und Unterschiede zur Sprache C
    • Objektorientierte Programmierung
      • Klassen
      • Vererbung
      • Virtuelle Funktionen
      • Templates
      • Exceptions
  2. Programmieren mit Qt (Teil 2) qt
    • Lizenzen
    • Signal-Slot-Mechanismus
    • Einführung in die allgemeine Nutzung der Qt Bibliothek
    • Erstellung und Verwendung von GUI-Elementen mit QtGui
    • Programmierung mit QtCreator
    • graphische Anwendungen per Drag & Drop mit QtDesigner
    • Internationalisierung mit QtLinguist
    • was Qt noch alles bietet

Vorlesung und Übung

Die Vorlesung und Übung findet ganztags von 9:15 bis 17:00 Uhr (eine Stunde Mittagspause) im CIP-Pool statt.

Qt im CIP-Pool

Die Entwicklungsumgebung des Qt5-Pakets ist bereits auf den Rechnern im CIP-Pool sowohl für Linux als auch Windows vorinstalliert.

unter Windows

Sie haben nach Anmeldung unter Windows durch Ausführen des Skripts qt5 in der Eingabeaufforderung CMD Zugriff auf die Entwicklungsumgebung des QtCreator. Die Pfade zu den Qt-Bibliotheken sind in Windows noch nicht explizit eingebunden.

unter Linux

Um Qt unter Linux verwenden zu können müssen Sie das C-Shell Skript en ausführen um die Pfadvariablen zu setzten. Dann sind die Bibliotheken als auch der QtCreator nutzbar.

Projekt

Die erworbenen Kenntnisse sollen im Rahmen eines kleinen Projekts vorgeführt werden. Dazu kann man alleine oder zu zweit an einem Projekt arbeiten, welches bis zum Kursende präsentierbar sein sollte. Es bestehen keinerlei Vorgaben bei der Wahl der Projekte, meist werden kleine Spiele programmiert. Entscheidend für ein gutes Projekt ist in erster Linie die Qualität des Quellcodes.

Kursunterlagen

Unterlagen zum Kurs werden während des Kurses bereitgestellt. Skript Aufgaben

Bilder von früheren Projekten

Diese Bildergalerie zeigt einige Screenshots von früheren Projekten.

Aktuelle Version von Qt

Qt biete viele Möglichkeiten um spezielle Probleme lösen zu können:
  • Qt Core – die Hauptbibliotheken die von vielen weiteren Qt Modulen verwendet werden
  • Qt GUI – Basisklasse für die Entwicklung graphischer Komponenten (inklusive OpenGL)
  • Qt Multimedia – Klassen für Audio, Video, Radio und Kamera Funktionalitäten
  • Qt Multimedia Widgets – graphische Fensterkomponenten zur Implementierung von Multimedia Inhalten
  • Qt Network – Klassen zur einfachen Netzwerkprogrammierung
  • Qt QML – Klassen zur Verarbeitung von QML und JavaScript
  • Qt Quick – Framework zur Erstellung eigener Benutzeroberflächen
  • Qt Quick Controls – ein auf Qt Quick basiserendes UI um klassische Desktop Darstellungen zu erzeugen
  • Qt Quick Layouts – um Qt Quick Elemente in einer eigenen Benutzeroberfläche zu arrangieren
  • Qt SQL – Klassen zur SQL Datenbank Verarbeitung
  • Qt Test – Klassen um unit test für Qt Klassen und Bibliotheken durchzuführen
  • Qt WebKit – Klassen um WebKit2 und die QML API zu implementieren
  • Qt WebKit Widgets – Kompatibilitätsklassen für WebKit1 und QWidget aus Qt 4
  • Qt Widgets – Klassen um Qt GUI mit C++ Widgets erweitern zu können

Beispiele von professionellen Projekten in denen Qt zum Einsatz kommt: Bitcoin, Google Earth, last.fm, Mathematica, Opera, Origin, QtiPlot, Spotify, Skype, VLC media player, ...

Literatur

Literatur zu C++

Neben diversen völlig ausreichenden Skripten aus dem Internet und/oder dem Skript von der Uni Hannover (zu beziehen über den Infostand des Rechenzentrums) ist folgende ausführlichere Literatur zu empfehlen:
  • Ulrich Breymann: "Der C++-Programmierer", Hanser 2009
  • Bjarne Stroustroup: "The C++ Programming Language", Addison Wesley 1999
    Bjarne Stroustroup: "Die C++ Programmiersprache", Addison Wesley, 1998
  • Ira Pohl: "C++ for C Programmers", Third Edition, Addison Wesley, 1999
  • Bruce Eckel: "In C++ denken", Markt und Technik 1998
    Bruce Eckel: "Thinking in C++", Prentice Hall
  • Ulrich Breymann: "C++, eine Einführung", Hanser 1999

Eine aktuelle Liste an guter Literatur wird auf der Homepage des C/C++-Kurses und der Kurshomepage Techniken der generischen und objektorientierten Programmierung mit C++ gepflegt. Ein Tipp für alle, die sich ein Buch kaufen wollen: Nicht vor englischen Büchern zurückschrecken! Ein Großteil der brauchbaren Dokumentation ist sowieso englisch, man muss sich dann nicht ständig an neue Begriffe gewöhnen.

Literatur zu Qt

Es empfiehlt sich das Buch von Jasmin Blanchette und Mark Summerfield: "C++ GUI Programming with Qt 4 (2nd Revised edition) - The official C++/Qt book", Prentice Hall International.
Das nicht überabeitete Buch (also in der 1. Verfassung) gibt es frei verfügbar als Download.
Leider gibt es bisher noch keine Literatur die sich ausschließlich mit Qt 5 befasst. Jedoch gibt es von Galileo Press ein umfangreiches Kaptitel, dass sich mit dem neuesten Qt Standard auseinander setzt.

Nützliche Links

Letzte Änderung: 18.01.2015 von ℜìçℏíë