Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date
All threads index page 6

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 ]