In diesem Kapitel werden wir uns der View Klasse von KScribble zuwenden, um zu definieren, wie die Kindfenster arbeiten sollen.
Als erstes sehen wir, daß KScribbleView standarmäßig von QWidget abgeleitet ist. Das ist die Mindestanforderung für ein
Kindfenster, aber es reicht bereits für unsere Bedürfnisse aus. Wenn es darum geht, das Verhalten eines neuen Widgets zu definieren,
müssen wir wissen, wie der Benutzer mit dem Fenster interagieren soll. In unserem Beispiel, soll dies offensichtlich mit Hilfe der Maus
geschehen. Daher müssen wir einige virtuelle Methoden von QWidget überschreiben, die die Mausereignisse verarbeiten die unser
Widget empfängt. Was wir wissen müssen ist, wann der Benutzer eine Maustaste drückt, weil nur gezeichnet werden soll, wenn eine
Maustaste gedrückt ist. Außerdem müssen wir wissen, wann die Maus bewegt wird (und wohin), sowie den Zeitpunkt, zu dem die Maustaste
losgelassen wird, da dann der Zeichenzug beendet ist. Weiterhin wollen wir, daß unser Bild im Fenster gezeichnet wird und seine
Größe angepasst wird, wenn der Benutzer sich entschließt, das Fenster in der Größe zu verändern. Wir werden auch ein Member
QPointArray und einen boolschen Wert mousePressed hinzufügen. Fügen Sie den, mit dem Pfeil gekennzeichneten Code, Ihrer Klasse
KScribbleView hinzu:
1 kscribbleview.h
2
3 -> #include <qpointarray.h>
4
5 class KScribbleView
6 {
7 .
8 .
9 protected:
10 virtual void closeEvent(QCloseEvent* );
11
12 -> virtual void mousePressEvent( QMouseEvent * );
13 -> virtual void mouseReleaseEvent( QMouseEvent * );
14 -> virtual void mouseMoveEvent( QMouseEvent * );
15 -> virtual void resizeEvent( QResizeEvent * );
16 -> virtual void paintEvent( QPaintEvent * );
17
18 KScribbleDoc *doc;
19
20 -> private:
21 -> bool mousePressed;
22 -> QPointArray polyline;
23
24 } |