PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT Designer: Events für erstellte Widgets



xmarvel
12-05-2004, 21:43
Habe ein wirklich dummes und bestimmt sehr einfaches Problem woran ich schon seid 3 Tagen sitzen und jetzt nicht mehr weiter komme :(
Wie kann ich mittels QT Designer einzelne Widgets weitere Events beibringen ?
Zum testen habe ich ein QWidget Forumlar erstellt mit ein pixmap Label drin.
Jetzt will ich wenn ich auf das pixmap Label drücke das er ein Pixel malt. Dafür braucht ja das pixmapLabel ja den Event mousePressEvent(QMouseEvent* mouse)
Ja und hier liegt mein Problem wie und wo schreibe ich das rein ?
Mit dem QWidget Forumlar ist das alles kein Problem da funktioniert ja folgender Code in der form1.ui.h bestens !

void Form1::mousePressEvent(QMouseEvent* mouse)
{
QPainter paint(this);
QPoint pos = mouse->pos();

if ((mouse->state()&LeftButton)) paint.drawPoint(pos.x(), pos.y());
}

nur eben ist das Event für das QWidget Formular und nicht fürs PixmapLabel.
Und bitte eine Erklärung wie es mit den QT Designer funktioniert und nicht mit dem Texteditor.

MFG
xmarvel

anda_skoa
13-05-2004, 09:46
Wäre wahrscheinlich sinnvoller es nicht mi QLabel zu machen.

Wenn du das Bild mit der Mouse ändern willst, ist eine QWidget Subklasse sicher besser, die Methoden von QLabel brauchst du ja dann nicht.

Ciao,
_

xmarvel
13-05-2004, 11:17
es ist ja nur ein Beispiel mit geht es ja darum Events z.B. eben MousePressEvent oder MouseMove oder PaintEvent usw. ein Widget zuzuordnen aber eben unter dem QT Designer.
Den folgender Code funktioniert ja nicht da das erzeugte Widget ja in der Klasse Form1 ist


void pixmapLabel::mousePressEvent(QMouseEvent* mouse)
{
QPainter paint(this);
QPoint pos = mouse->pos();

if ((mouse->state()&LeftButton)) paint.drawPoint(pos.x(), pos.y());
}

dann kommt folgender Fehler error: Syntaxfehler before `::' token

Aber irgendwie muss ich ja den mousePressEvent ein einzelen Widget zu ordnen aber wie unter den QT Designer ?

MFG
xmarvel

xmarvel
13-05-2004, 19:41
ich werde das nochmal ein bissel anders Beschreiben ich habe ein Hauptwidget nämlich mein QWidget darunter befindet sich mein QpixmapLabel oder ein QGroupBox jetzt haben die Widget kein MousePressEvent allerdings leiten sich ja die beiden Unterwidget vom QWidget Object ab und der hat ein MousePressEvent.
Jetzt muss es doch möglich sein das z.b. das QGroupBox den Event MousePressEvent beizubringen und das ganze sollte doch mit dem QT-Designer möglich sein oder nicht ?
Ich komme da ohne Hilfe irgendwie nicht weiter.

MFG
xmarvel

anda_skoa
13-05-2004, 21:22
Desiger ist nur ein GUI Builder, damit kann man Elemente gruppieren und verknüpfen.

Normalerweise, wenn man Event Handler benutzen will, erzeugt man eine Subklasse und überschreibt dort den jeweiligen Eventhandler.

Bei kleinen Sachen kann man auch mit einem Eventfilter arbeiten und die Verarbeitung in einem anderen QObject machen.

Ciao,
_

xmarvel
14-05-2004, 16:31
hmm dann werde ich das lieber alles per Hand schreiben und nicht den QT Designer verwenden.