Qt-interest Archive, July 2007
pos and lastpos in QGraphicsSceneMouseEvent
Message 1 in thread
Hello
I'm looking a way to handle event like QGraphicsSceneMouseEvent.
I have my own widget which inherit after QGraphicsRectItem. In his body
function
void CanvasItemRectangle::mouseMoveEvent ( QGraphicsSceneMouseEvent * event
) process event to check if CanvasItemRectangle crossed the border of his
parent (on the canvas) widget (if any).
QRectFwymiar0=_parent->sceneBoundingRect();
QRectF wymiar = sceneBoundingRect();
if (wymiar0.x() > wymiar.x() + _x){
std::cout << "Uwaga przekraczam granice - trzeba zerowac event" <<
std::endl;
}
// przekracza prawa krawedz
if (wymiar0.right() < wymiar.right() + _x){
std::cout << "Uwaga przekraczam prawa granice - trzeba zerowac
event" << std::endl;
}
// przekracza gorna krawedz
if (wymiar0.top() > wymiar.top() + _y){
std::cout << "Uwaga przekraczam gorna granice - trzeba zerowac
event" << std::endl;
}
// przekracza dolna krawedz
if (wymiar0.bottom() < wymiar.bottom() + _y){
std::cout << "Uwaga przekraczam dolna granice - trzeba zerowac
event" << std::endl;
}
In checking functions can't be use simple return function because if mouse
move be "huge" ;) then children cross parent borders and stay there.
I'm tinking to modyfiy event before pass it to
QGraphicsItem::mouseMoveEvent(event);
but i don't know how.
Something with this
event->setPos(event->lastPos());
event->setScenePos(event->lastScenePos());
event->setScreenPos(event->lastScreenPos());
dosen't work, maybe it's not enough for QGraphicsSceneMouseEvent, in it's
body is more data then *Pos QRect's.
Best regards :)
--
[ signature omitted ]