# 10.4. Verbinden und Einstellen

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.