# 3.4. Wir Erweitern die Widget Klasse

Übung 5 hat das Ziel, die Widget Klasse zu erweitern. Darum lernen Sie hier auch etwas über virtuelle Funktionen. In unserem Fall werden wir die Funktion `resizeEvent()` neu schreiben. Abgesehen vom Erweitern unserer Klassen, ist es wichtig zu wissen, daß QT benutzerdefinierte Ereignisse über virtuelle Funktionen abarbeitet, die ein Ereignisobjekt als Parameter übergeben bekommen.

Darum sollten Sie sich mit den folgenden Klassen der QT Bibliothek vertraut machen:

- QEvent

- QChildEvent

- QCloseEvent

- QFocusEvent

- QKeyEvent

- QMouseEvent

- QMoveEvent

- QPaintEvent

- QResizeEvent

- QTimerEvent

Jedesmal, wenn Sie ein eigenes Widget schreiben, insbesondere dann, wenn damit sichtbare Teile der Anwendung dargestellt werden, müssen Sie die Standard Implementierung der Event-Methoden des Widgets durch eigene Methoden überschreiben, die bestimmte Ereignisse abarbeiten sollen.

Dazu gehört beispielsweise `virtual void mousePressEvent ( QMouseEvent * )`, die für die Verarbeitung der Maus-Ereignisse zuständig ist, die ein Kontextmenü aufklappen lassen.

Bei der Implementierung müssen Sie im Funktionskopf einen formalen Parameter angeben. Die meisten Entwickler vergeben für den Parameter den Namen `event` oder einfach `e`. Nun können Sie die Parameter des Ereignisses abfragen. Bei einem `QMouseEvent` müssen Sie feststellen, ob das Ereignis durch die rechte, die mittlere oder die linke Maustaste ausgelöst wurde.