Bibliotheken
← elektronische Abgabe | ● | elektronische Abgabe →
Handübung zum Umgang mit Bibliotheken:
Implementieren Sie mit der Open-Source Bibliothek Qt ein Programm, welches den Baum des Pythagoras zeichnet.

Frame Work
Als Ausgangsbasis für Ihre Implementierung verwenden Sie das Qt Framework.
Letzteres checken Sie bitte außerhalb Ihres Repositories aus.
Wenn Sie das Framework in Ihr eigenes Repository integrieren wollen, verwenden Sie den “export” Modus von SVN wie folgt:
cd "your repo" svn export svn://schorsch.efi.fh-nuernberg.de/qt-framework qt-framework svn add qt-framework svn commit -m "import qt-framework"
Hinweise zur Installation von Qt:
Das Framework setzt eine Installation der Qt Klassen-Bibliothek voraus
- Starten zuerst das Skript “./build.sh” aus dem Framework. Dieses versucht die Installation auf Ubuntu und MacOS X automatisch vorzunehmen.
- Erst wenn dieses Skript nicht erfolgreich abläuft, müssen Sie Qt manuell selber installieren:
- Auf Ubuntu installieren Sie diese Bibliothek mit “sudo apt-get install libqt4-dev”
- Unter MacOS X folgen Sie bitte diesen Installationshinweisen
Wenn Qt ordnungsgemäß installiert wurde, funktioniert die Ãœbersetzung des Frameworks wie gewohnt mit “cmake . && make”.
Vorzugsweise arbeiten Sie jedoch mit der Qt-Entwicklungsumgebung. Dazu öffnen Sie mit dem Qt Creator das “qt-framework.pro” file.
Nun zur Ãœbung mit Qt
Verändern Sie die paintEvent()
Methode der Klasse “PainterWidget” in painterwidget.cpp, so dass Sie die QPainter Klasse zum Zeichnen des Baums wie folgt verwenden:
Detaillierte Hinweise zur Programmieraufgabe:
- Verändern Sie die PainterWidget::paintEvent Methode wie folgt:
- Zeichnen Sie den Hauptstamm des Baums, mit QPainter, z.B. eine einfache diagonale Linie.
- Zeichnen Sie nun ein “Y”. Verwenden Sie dazu Koordinatentransformationen, d.h. die Methoden “translate” und “rotate” von QPainter.
- Am einfachsten funktioniert dies, wenn sie das Koordinatensystem zuallererst von der linken oberen Ecke nach unten in die Mitte verschieben und um 180 Grad rotieren.
- Zeichnen Sie anschließend anstelle eines einfachen “Y” nun auch die übrigen Verästelungen des Baums mit Hilfe von Rekursion.
Detaillierte Hinweise zur Rekursion:
- Verwenden Sie Rekursion um den Stamm mit zwei kleineren Ästen fortzusetzen, wobei jeder der zwei Äste wiederum mit jeweils zwei weiteren kleineren Ästen fortgesetzt wird, die wiederum jeweils mit zwei Ästen fortgesetzt werden, usw. usw…
- Für die Rekursion benötigen Sie eine eigene Methode, die sich selber aufrufen kann und die Zeichenbefehle für eine Verästelung enthält.
- Im Vergleich mit dem Code zum Zeichnen des “Y”, ersetzen Sie für die rekursive Variante das Zeichnen der oberen zwei Äste durch zwei rekursive Funktionsaufrufe.
- Die Rekursion arbeitet dann wie folgt:
- Stamm zeichnen
- Koordinatentransformationen für den linken Ast festlegen
- Rekursion ausführen
- Koordinatentransformationen für den rechten Ast festlegen
- Rekursion ausführen
- Koordinatentransformationen rückgängig machen
- alle in der richtigen umgekehrten Reihenfolge (bzw. mit restore())
- Beenden Sie den rekursiven Aufruf, wenn die Länge der Äste während des Zeichnens eine bestimmte Grenze unterschritten hat. Die Astlänge bzw. die Rekursionstiefe wird am besten als Funktionsparameter der rekursiven Funktion weitergegeben. Ebenso geben Sie die QPainter-Instanz mittels Call-by-Reference weiter.
Zusatzaufgaben:
- Färben Sie die Blätter des Baumes grün!
- Zeichnen Sie den Baum genauso wie auf dem oberen Bild dargestellt!
Student Gallery 2018:
Student Gallery 2017:
Student Gallery 2016:
Student Gallery 2015:
Student Gallery 2014: