Rechteck in GraphicsView bei mouseMoveEvent nur manchmal gez
Verfasst: 18. April 2009 00:27
Hallo!
Ich habe eine class GraphicsViewFractalCanvas : public QGraphicsView abgeleitet.
Diese Klasse verwaltet eine QGraphicsScene und ein QImage.
Bei einen GraphicsView-mouseMoveEvent soll immer ein Rechteck entsprechend der
Mausbewegung gezeichnet werden. Leider klappt es nur zu ungefähr 50% der Versuche.
Kann mir jemand helfen und erklären, warum es manchmal klappt und manchmal nicht?
Vielen Dank!
Hier die mouseMoveEvent - Funktion:
void GraphicsViewFractalCanvas::mouseMoveEvent (QMouseEvent *event) {
int mouseCurrX, mouseCurrY;
int minX, maxX, minY, maxY;
mouseCurrX = event->x ();
mouseCurrY = event->y ();
if (event->buttons () != Qt::LeftButton) {
event->ignore ();
return;
}
if (mousePressX <= mouseCurrX) {
minX = mousePressX;
maxX = mouseCurrX;
} else {
minX = mouseCurrX;
maxX = mousePressX;
}
if (mousePressY <= mouseCurrY) {
minY = mousePressY;
maxY = mouseCurrY;
} else {
minY = mouseCurrY;
maxY = mousePressY;
}
if (!selectionRectItem) {
QPen pen;
QBrush brush;
brush.setStyle (Qt::Dense7Pattern);
brush.setColor (QColor (242, 255,0));
pen.setStyle (Qt::DashDotLine);
pen.setWidth (1);
pen.setBrush (Qt::yellow);
pen.setCapStyle (Qt::FlatCap);
pen.setJoinStyle (Qt::MiterJoin);
selectionRectItem = gScene.addRect (minX, minY, 4, 4, pen, brush);
} else
selectionRectItem->setRect (minX, minY, maxX - minX, maxY - minY);
selectionRectItem->update();
selectionRectItem->show ();
invalidateScene (QRectF(), QGraphicsScene::AllLayers);
update ();
}
Ich habe eine class GraphicsViewFractalCanvas : public QGraphicsView abgeleitet.
Diese Klasse verwaltet eine QGraphicsScene und ein QImage.
Bei einen GraphicsView-mouseMoveEvent soll immer ein Rechteck entsprechend der
Mausbewegung gezeichnet werden. Leider klappt es nur zu ungefähr 50% der Versuche.
Kann mir jemand helfen und erklären, warum es manchmal klappt und manchmal nicht?
Vielen Dank!
Hier die mouseMoveEvent - Funktion:
void GraphicsViewFractalCanvas::mouseMoveEvent (QMouseEvent *event) {
int mouseCurrX, mouseCurrY;
int minX, maxX, minY, maxY;
mouseCurrX = event->x ();
mouseCurrY = event->y ();
if (event->buttons () != Qt::LeftButton) {
event->ignore ();
return;
}
if (mousePressX <= mouseCurrX) {
minX = mousePressX;
maxX = mouseCurrX;
} else {
minX = mouseCurrX;
maxX = mousePressX;
}
if (mousePressY <= mouseCurrY) {
minY = mousePressY;
maxY = mouseCurrY;
} else {
minY = mouseCurrY;
maxY = mousePressY;
}
if (!selectionRectItem) {
QPen pen;
QBrush brush;
brush.setStyle (Qt::Dense7Pattern);
brush.setColor (QColor (242, 255,0));
pen.setStyle (Qt::DashDotLine);
pen.setWidth (1);
pen.setBrush (Qt::yellow);
pen.setCapStyle (Qt::FlatCap);
pen.setJoinStyle (Qt::MiterJoin);
selectionRectItem = gScene.addRect (minX, minY, 4, 4, pen, brush);
} else
selectionRectItem->setRect (minX, minY, maxX - minX, maxY - minY);
selectionRectItem->update();
selectionRectItem->show ();
invalidateScene (QRectF(), QGraphicsScene::AllLayers);
update ();
}