KDE Anwendungs Tutorials: Der KDE Anwendungs-Tutorial Leitfaden für die Integrierte Entwicklungsumgebung KDevelop | ||
---|---|---|
Zurück | Kapitel 10. Erweiterung der GUI | Vor |
Nachdem wie nun die GUI des Dialogs erstellt haben, müssen wir den Köpfen noch die Funktionalität geben, und Mittel zur Verfügung stellen, die Werte der Spinbox zu holen und zu setzen, weil wir wollen, daß der Dialog den aktuellen Wert anzeigt, wenn er aufgerufen wird, und wir möchten den eingestellten Wert auslesen, wenn der "OK" Knopf gedrückt wird.
In der erzeugten Klasse KPenBrushDlg können Sie neben dem Konstruktor und dem Destruktor noch die Methode initDialog() finden. Diese Methode implementiert die gesamte GUI Konstruktion, deshalb müssen wir uns darum nicht mehr kümmern, sondern können direkt die üblichen Verbindungen für unsere Knöpfe erstellen. Fügen Sie die markierten Zeilen in den Konstruktor des Dialogs ein:
1 KPenBrushDlg::KPenBrushDlg(int curr, QWidget *parent, const char *name) : QDialog(parent,name,true){ 2 initDialog(); 3 4 -> connect(default_btn, SIGNAL(clicked()), this, SLOT(slotDefault())); 5 -> connect(ok_btn, SIGNAL(clicked()), this, SLOT(accept())); 6 -> connect(cancel_btn, SIGNAL(clicked()), this, SLOT(reject())); 7 } |
Dies implementiert die Funktionalität für die Knöpfe, für den Fall, daß sie gedrückt werden. Als erstes stellen wir den Standardknopf so ein, daß er den Slot slotDefault() ausführt. Dieser Slot, in dem wir den Standardwert für die Spinbox direkt setzen, muß noch implementiert werden.
Der zweite connect() Aufruf verbindet den "OK" Knopf mit dem Slot accept(), der von QDialog bereitgestellt wird, genauso wie der reject() Slot, den wir mit dem "Cancel" Knopf verbinden. "Cancel" wird sowohl den Dialog schließen, als auch den resultierenden Wert setzen, den wir später, wenn wir die Methode implementieren, die den Dialog aufruft, dazu verwenden werden, herauszufinden ob der neu eingestellte Wert verwendet oder die ganze Aktion abgebrochen werden soll.
Jetzt werden wir die beiden Methoden zum Setzen und holen der Spinbox-Werte hinzufügen:
1 void setCurrent(int curr){ width_spbox->setValue(curr); } 2 int width() { return width_spbox->value(); }; |
Fügen Sie diese Methoden in der Klassendeklaration mit dem Modifizierer "public" ein, da wir die Werte setzen und holen wollen, wenn der Dialog angezeigt wird. Die Methode setCurrent() wird zum Setzen des aktuellen Stiftwertes verwendet, die width() Methode liefert den Wert zurück, den die Spinbox hat, wenn der Benutzer "OK" drückt.
Schließlich müssen wir noch die Methode slotDefault() implementieren:
1 //kpenbrushdlg.h: 2 //method declaration: 3 4 public slots: 5 void slotDefault(); 6 7 //kpenbrushdlg.cpp: 8 //method implementation: 9 10 void KPenBrushDlg::slotDefault() 11 { 12 width_spbox->setValue(3); 13 } |
Dies setzt den Standardwert für die Stiftbreite auf 3 Pixel.
Wir sind nun mit unserem ersten Dialog fertig und können uns den anderen Klassen der Anwendung zuwenden, um noch einiges zu adaptieren und Methoden zu implementieren, die den Dialog aufrufen.