Dr. Matthias Grabert Abteilung Angewandte Informationsverarbeitung 10. Januar 2003
Johannes Mayer Blatt 10


Uni Logo



Objektorientierte Softwareentwicklung mit C++ (WS 2002/2003)


Abgabetermin: 16. Januar 2002

Qt ist ein wesentlicher Bestandteil des Projekts, das am 14. Januar beginnt. Daher ist die erste Projektwoche - neben ersten kleineren Projektaufgaben - auch zum Erlernen von Qt da. Deshalb auch dieses Übungsblatt zu Qt, das zum Vertiefen des Gelernten dienen soll. ;-)

1 Qt Designer (5 Punkte)

,,Klicken`` Sie sich mit dem Qt Designer folgendes kleine Dialogfenster zusammen, das sich wie abgebildet bei Vergrößerung/Verkleinerung des Fensters verhält:

\includegraphics[scale=0.5]{img1} \includegraphics[scale=0.5]{img2}
Schreiben Sie außerdem ein minimales Progrämmchen, das ihr eigenes Widget verwendet.

Schön wäre es, wenn beim Drücken des ,,Beenden``-Buttons das Programm beendet würde, beim Drücken des ,,Leeren``-Buttons das Eingabefeld geleert würde und beim Doppelklick auf einen Listeneintrag dieser im Eingabefeld angezeigt wird. Dies lässt sich alles durch Klicken im Designer einstellen. Jedoch ist dieser Zusatz nicht Pflicht. ;-)

2 Signale und Slots (5 Punkte)

Schreiben sie eine kleine eigene Widget-Klasse, deren Objekte je aus einem Label und einem Button bestehen, die übereinander angeordnet sind. Außerdem gibt es einen internen Wert. Bei jedem Drücken des Buttons soll der interne Wert, der mit 0 initialisiert ist und von dem Label angezeigt wird, um eins erhöht werden. (Sie brauchen also in dieser Klasse dafür wohl einen eigenen Slot.) Außerdem soll ihr eigenes Widget ein Signal ten_reached() aussenden, wenn der interne Wert 10 erreicht ist. (Sie müssen also ein eigenes Signal deklarieren. Das ist eine Methode im Signal-Teil ohne (!!) eigene Implementierung.)

Außerdem schreiben sie ein minimales Hauptprogramm, das ihr eigenes Widget als Hauptwidget verwendet und auf das Signal ten_reached() des Hauptwidgets mit dem Beenden des Programms reagiert.

Tipp: Ein selbst deklariertes Signal void mysignal() kann man in der deklarierenden Klasse mittels emit mysignal() aussenden.



Johannes Mayer 2003-01-10