7. GUI-Design mit Qt
Programmieren in C++
Hubert Feyrer <hubert@feyrer.de>
Inhalt
- Einführung
- Erstes Beispiel: Button
- GUI erstellen
- Rahmenprogramm
- Compilieren
- Verbinden von Slots und Signals
- manuell
- vereinfacht
- grafisch
- Beispiele
- Übungen
Screenshot
Manuelle GUI-Programmierung
- Für "einfache" und "komplexe" GUIs
- Vorteil: volle Kontrolle für "komplexe" GUIs
- Nachteil: Aufwand für "einfach" GUIs
- Wunsch: Vereinfachung bei "einfachen" GUIs
- Lösung: GUI Builder
Ein erstes Beispiel
- Ziel:
- Vorgehen:
- Neues Widget anlegen
- Button anlegen
- GUI speichern
- Rahmenprogramm erstellen
- Compilieren
Ein erstes Beispiel
Neues Widget anlegen:
Ein erstes Beispiel
Button anlegen und umbenennen:
Ein erstes Beispiel
Widget-Name in Properties festlegen:
Ein erstes Beispiel
Rahmenprogramm:
Verbinden von Slots und Signals
Beispiel:
Es existieren drei Möglichkeiten:
- manuell - connect()
- vereinfacht - on_<Element>_<Signal>()
- mit Designer
Verbinden: vereinfacht
- In der Klassendefinition wird ein Slot hinterlegt
- Eine Verbindung zu einem bestimmten Signal eines bestimmten GUI-Elements
wird automatisch erstellt
- Verbindung wird vom moc(1) automatisch erstellt
- Slot: on_<Element>_<Signal>()
- Beispiele:
on_pushButton_clicked(),
on_spinBox_valueChanged(int)
Verbinden: grafisch
- Verbinden mit Designer
- Anwählen: "Connect Signals and Slots"-Button:
(bzw. F4-Taste)
- Verbinden durch Drag & Drop:
Verbinden: grafisch
- Bestimmen von Signals und Slots:
Übungen
- Bestimmen Sie die Dokumentation der Klassen
QObject, QString und QPushButton. Wo in der Klassenhierarchie stehen die
Klassen, welche Basis- und Unterklassen existieren, welche
Methoden und Attribute haben die Klassen, welche Signals und
Slots existieren?
- Vergleichen Sie die Klasse QStack mit der in Kapitel 4 erstellten
Stack-Klasse und der stack-Klasse der STL. Welche Gemeinsamkeiten
und Unterschiede bestehen?
- Taschenrechner mit Grundrechenarten Programmieren
- Taschenrechner um Tasten Speichern/Recall erweitern
- Taschenrechner programmieren, der alternativ die
Umgekehrt Polnische Notation anbietet.