Deko-Banner

C++ - Programmierung:
Grundlagen und Anwendungen mit der Qt-Klassenbibliothek

Veranstalter: Fakultät Physik, Dr.F.Wünsch;      Dozent: Dominik Köppl

c++-qt
  1. Voraussetzungen
  2. Scheinanforderungen
  3. FlexNow
  4. Gliederung
  5. Qt im CIP-Pool
  6. Projektarbeit
  7. Beispiele aus der Vorlesung
  8. Skript zum Kurs
  9. Bilder von früheren Projekten
  10. Versionsgeschichte von Qt
  11. Literatur
  12. Nützliche Links

Dieser Kurs richtet sich an alle, die bereits Vorkenntnisse in der Programmiersprache C erworben haben. 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 - es ist für die meisten Unix-ähnlichen Betriebssysteme (SunOS, Linux, Mac OS X etc. ) sowie für MS-Windows in drei verschiedenen Lizenzen erhältlich:
  • GPL
  • LGPL
  • kommerzielle Version mit Support

Voraussetzungen und Vorkenntnisse für den Besuch dieser Veranstaltung

Die Laptop-Crew
  • Passable Programmierkenntnisse in C (Der Umgang mit Pointer sollte vertraut sein)
  • Ein Linux-Account wird für die Verwendung der Linux Rechner benötigt. Dieser muss extra im Rechenzentrum beantragt werden (beim Herrn Wolfgang Pulina, RZ 0.07).
  • Keine Angst vor Linux/Unix - Wir verwenden die Linux-Rechner im CIP Pool mit der gcc (Umgang mit dem Gnu C Compiler sollte ja schon aus einem C Kurs bekannt sein).
  • Alternativ darf ein eigener Windows-Rechner (vorzugsweise Notebook/Laptop) mitgebracht werden, da alle verwendeten Werkzeuge plattformübergreifend und OpenSource sind.
  • Englischkenntnisse, da die Dokumentation nur in Englisch verfügbar ist

Scheinanforderungen

Als Scheinkriterium gelten folgende Punkte:

  • Anwesenheit in den Übungen
  • Erstellen eines kleinen Abschlußprojektes

FlexNow

Teamarbeit

Studenten, die statt der herkömmlichen Papierscheinzertifizierung einen FlexNow!-Eintrag benötigen, müssen innerhalb der ersten Kurstage ihre FlexNow-Anmeldung erfolgreich ausführen. Dieser Kurs ist unter dem Decknamen Programmieren portabler graphischer Anwendungen unter der Rubrik Studienbegleitende IT-Ausbildung bzw. Studiengang Physik Bachelor/Master eingetragen. 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++ (1. Woche) c++
    • Grundlagen der Programmiersprache C++ und Unterschiede zur Sprache C
    • Objektorientierte Programmierung
      • Klassen
      • Vererbung
      • Virtuelle Funktionen
      • Templates
      • Exceptions
  2. Programmieren mit Qt (2. Woche) qt
    • Einführung in die GUI-Techniken
    • Lizenzen
    • Signal-Slot-Mechanismus
    • QPainter - Malen/Animationen
    • viele weitere GUI-Elemente
    • Der Qt-Designer (GUI-Programmierung mit Drag & Drop)
    • Internationalisierung mit Qt-Linguist

Qt im CIP-Pool

Die Entwicklungsumgebung des Qt4-Pakets ist bereits an den Rechnern im Physik-CIP-Pool vorinstalliert. Sie haben nach dem Anmelden sofort Zugriff auf allen wichtigen Befehle, die Sie zur Qt-Entwicklung benötigen.

Projekt

Das BlackJack läuft!

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 abgeschlossen sein sollte. Es bestehen keinerlei Vorgaben bei der Wahl der Projekte. Meist werden aber gerne kleine Spiele programmiert.
Zusätzlich zum Quelltext soll eine kurze Dokumentation des Projekts erstellt werden. Diese kann man im Projektverzeichnis als einfache Textdatei mit dem Namen DESC ablegen. Schließlich sollte man noch einen Screenshot vom fertigen Programm mitsenden (am Besten im JPEG-Format), und im Projektverzeichnis eine Datei AUTHORS anlegen, welche die Autorennamen beinhaltet.

Das Ganze (also Quelltext, Beschreibung und Screenshot - nicht die ausführbare Datei!) bitte nach dem Kurs an die Adresse

dominik.koeppl _@_ stud.uni-regensburg.de
als Attachment mailen.
In der Mail bitte die Namen aller Projekt-Beteiligten aufführen!

Beispiele aus der Vorlesung

Die in der Vorlesung benutzten Beispiele können an jedem Nachmittag während des Kurses auf dieser Kurshomepage abgerufen werden.

Skript zum Kurs

Für den Kurs gibt es ein Skript, welches online verfügbar ist. Es ist empfehlenswert, sich dieses Skript auszudrucken. Die Gliederung des Kursskriptes wird jedoch nicht dem Kursverlauf entsprechen. Auch eine Gewähr auf Fehlerfreiheit entfällt. Wir werden das Skript allen Teilnehmer(inne)n, die es wünschen, spätestens am zweiten Kurstag kostenlos aushändigen. Link zum Skript

Bilder von früheren Projekten

Diese Bildergalerie zeigt einige Screenshots von früheren Projekten.

Versionsgeschichte von Qt

Die verschiedenen Versionen von Qt
Version Erneuerungen
1.x ist gewissermaßen die ur-Version von Qt
2.x fand weite Verbreitung. Für X11 gibt es eine GPL-Lizenzierte Version, für MS-Win ist teilweise noch eine nichtkommerzielle Version im Umlauf.
3.x ist noch die zur Zeit gebräuchlichste Version auf einigen konservativen Linux-Distributionen, da das komplette KDE 3 noch auf Qt 3.x basiert, und KDE 4 noch nicht als allzu stabil angesehen wird. Es existieren GPL-lizenzierte Versionen für X11 und OS X. Für MS-Win gibt es nur kommerzielle Versionen, und eine nicht-kommerzielle Version, die jedoch nicht frei im Sinne von Open Source ist.
4.0 Sie unterscheidet sich zum Teil erheblich von den vorherigen Versionen; so wurde beispielsweise die Funktionalität des Designers geändert, und die Library selbst in mehrere kleinere Libraries aufgespalten, damit die Programme nicht unnötig aufgebläht werden. Von dieser Version gibt es GPL-lizenzierte Ausgaben für X11, OS X und MS-Win, wobei die freie Ausgabe für MS-Win für die Verwendung mit dem ebenfalls freien Compiler MinGW gedacht ist. Für die Verwendung mit kommerziellen Compilern existieren kommerziell lizenzierte Versionen von Qt.
4.3.1 Mit GraphicsView ist seit Qt 4.2 ein umfassendes canvas Framework hinzugekommen. Aber Grundsätzlich sind die Unterschiede zu 4.0 marginal.
4.4 Es gibt eine ganze Reihe von Neuerungen gegenüber der Vorgängerversion. Hierunter zählen z.B. Widgets on Canvas, QtWebKit (HTML render engine), Phonon (Multimedia), ...
4.5 Diese Version weist folgende neue Features auf:
  • Eine Benchmark-Bibliothek zur Auswertung der Performance
  • Verbesserung des Webkits: Man kann nun Flash-Applets einbauen
4.6
  • Unterstützung von Multitouch-Geräten
  • XML-Schema-Validierung
  • DOM-API zum XML-Parsen
  • Unterstützung modernerer OpenGL-Versionen und Unterstützung von OpenGL SL und OpenGL ES
  • Einbau graphischer Effektmöglichkeiten
4.7 Dies ist die aktuellste Version von Qt. Sie wird gegenwärtig in den meisten Linux-Distributionen mitgeliefert. So beruht z.B. die aktuelle Version von KDE 4 auf diese Version. Die Neuerungen beinhalten:
  • Die JavaScript-Dialektsprache QML wird fester Bestandteil. Damit steht unter dem Decknamen QtQuick ein neues Framework zur Verfügung, mit dem man sehr schnell grafische Anwendungen scripten kann.
  • Verbesserung des WebKits

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) ist folgende ausführlichere Literatur zu empfehlen:
  • 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 (z.B. der assistant von Qt) ist sowieso englisch, man muss sich dann nicht ständig an neue Begriffe gewöhnen.

Literatur zu Qt

Eine ausführliche aktuelle Liste guter Bücher stellt die Qt-Homepage bereit. Ich empfehle das Buch von Jasmin Blanchette und Mark Summerfield: "C++ GUI Programming with Qt 4 (2nd Edition) - The official C++/Qt book", Prentice Hall PTR. Das nicht überabeitete Buch (also in der 1. Verfassung) gibt es frei verfügbar zum download.

Nützliche Links

 
Letzte Änderung: 05.01.2011 von Webmaster