{
QRectF intersected
= QRectF(theRect.
intersected(scene
()->sceneRect
()));
if(intersected != theRect)
{
//the item is outside of sceneRect
if(theRect.top() != intersected.top())
{
//is at bottom
if(theRect.right() != intersected.right())
{
//is right
qDebug() << "top-right";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(0,-50,50,0);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
//is left
qDebug() << "top-left";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(-50,-50,0,0);
scene()->setSceneRect(mRect);
}else{
//only top
qDebug() << "top";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(0,-50,0,0);
scene()->setSceneRect(mRect);
}
}
}else{
if(theRect.bottom() != intersected.bottom())
{
//is at bottom
if(theRect.right() != intersected.right())
{
//is right
qDebug() << "bottom-right";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(0,0,50,50);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
//is left
qDebug() << "bottom-left";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(-50,0,0,50);
scene()->setSceneRect(mRect);
}else{
//only bottom
qDebug() << "bottom";
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(0,0,0,50);
scene()->setSceneRect(mRect);
}
}
}else{
if(theRect.right() != intersected.right())
{
qDebug() << "right";
//is right
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(0,0,50,0);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
qDebug() << "left";
//is left
QRectF mRect
= scene
()->sceneRect
();
mRect.adjust(-50,0,0,0);
scene()->setSceneRect(mRect);
}}
}
}
}else{
qDebug() << "no intersection";
}
}
void PixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QRectF theRect = QRectF(scenePos(), boundingRect().size());
QRectF intersected = QRectF(theRect.intersected(scene()->sceneRect()));
if(intersected != theRect)
{
//the item is outside of sceneRect
if(theRect.top() != intersected.top())
{
//is at bottom
if(theRect.right() != intersected.right())
{
//is right
qDebug() << "top-right";
QRectF mRect = scene()->sceneRect();
mRect.adjust(0,-50,50,0);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
//is left
qDebug() << "top-left";
QRectF mRect = scene()->sceneRect();
mRect.adjust(-50,-50,0,0);
scene()->setSceneRect(mRect);
}else{
//only top
qDebug() << "top";
QRectF mRect = scene()->sceneRect();
mRect.adjust(0,-50,0,0);
scene()->setSceneRect(mRect);
}
}
}else{
if(theRect.bottom() != intersected.bottom())
{
//is at bottom
if(theRect.right() != intersected.right())
{
//is right
qDebug() << "bottom-right";
QRectF mRect = scene()->sceneRect();
mRect.adjust(0,0,50,50);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
//is left
qDebug() << "bottom-left";
QRectF mRect = scene()->sceneRect();
mRect.adjust(-50,0,0,50);
scene()->setSceneRect(mRect);
}else{
//only bottom
qDebug() << "bottom";
QRectF mRect = scene()->sceneRect();
mRect.adjust(0,0,0,50);
scene()->setSceneRect(mRect);
}
}
}else{
if(theRect.right() != intersected.right())
{
qDebug() << "right";
//is right
QRectF mRect = scene()->sceneRect();
mRect.adjust(0,0,50,0);
scene()->setSceneRect(mRect);
}else{
if(theRect.left() != intersected.left())
{
qDebug() << "left";
//is left
QRectF mRect = scene()->sceneRect();
mRect.adjust(-50,0,0,0);
scene()->setSceneRect(mRect);
}}
}
}
}else{
qDebug() << "no intersection";
}
QGraphicsPixmapItem::mouseMoveEvent(event);
}
To copy to clipboard, switch view to plain text mode
Bookmarks