PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT & MousePressEvent



FireWare
24-03-2003, 15:21
Also, ich hab in ner QT anwendung einen Frame, in den ich mit bitBlt sachen reinzeichne, jetzt möchte ich noch einen handler dafür haben, wenn ich auf den frame klicke... bei den signalen gibts da leider nix :((.

Irgendwo hab ich gelesen dass man da n eigenes Widget erstellen muss oder so, aber ich hab keinen plan wie das geht,

ne kleine aufklärung wäre net schlecht ;-)

danke schonmal

tuxipuxi
24-03-2003, 15:34
hi,

du musst dein eigenes widget erstellen, das du dann von QWidget ( oder einer QWidgetsubclass ) ableitest:

class MyWidget : public QWidget {}

und in der klasse musst du die virtual funktion MousePressEvent reimplementieren.




void QWidget::mousePressEvent ( QMouseEvent * e ) [virtual protected]
This event handler, for event e, can be reimplemented in a subclass to receive mouse press events for the widget.
If you create new widgets in the mousePressEvent() the mouseReleaseEvent() may not end up where you expect, depending on the underlying window system (or X11 window manager), the widgets' location and maybe more.
The default implementation implements the closing of popup widgets when you click outside the window. For other widget types it does nothing.
See also mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), event() and QMouseEvent.
Examples: biff/biff.cpp, drawlines/connect.cpp, iconview/simple_dd/main.cpp, life/life.cpp, qmag/qmag.cpp, scribble/scribble.cpp and tooltip/tooltip.cpp.
Reimplemented in QSizeGrip.


also:

void MyWidget::MousePressEvent( QMouseEvent * e ) {}


.... und da dann eben die states behandeln.


ciao tuxipuxi

( falls das net klar genug war kannst du ja mal im irc vorbeischauen ( siehe sig ) ) ;)

anda_skoa
24-03-2003, 18:03
Du kannst auch einen Blick ins Tutrial in diesem Forum werfen.

Da gibt es eine Lektion für Handhabung von MouseEvents :)
(Lektion 5)

Ciao,
_