- QPointF mousePos = event->scenePos();
-
- if (m_selectedItem && event->buttons() & Qt::LeftButton) {
- // Rect
- if (m_selectedItem->type() == 3) {
- QGraphicsRectItem *item = static_cast <QGraphicsRectItem *>(m_selectedItem);
- QRectF rect = item->rect().normalized();
- QPointF pos = item->pos();
- QPointF mousePosInRect = item->mapFromScene(mousePos);
- switch (m_resizeMode) {
- case TopLeft:
- if (mousePos.x() < pos.x() + rect.height() && mousePos.y() < pos.y() + rect.height()) {
- item->setRect(rect.adjusted(0, 0, -mousePosInRect.x(), -mousePosInRect.y()));
- item->setPos(mousePos);
- }
- break;
- case Top:
- if (mousePos.y() < pos.y() + rect.height()) {
- rect.setBottom(rect.height() - mousePosInRect.y());
- item->setRect(rect);
- item->setPos(QPointF(pos.x(), mousePos.y()));
- }
- break;
- case TopRight:
- if (mousePos.x() > pos.x() && mousePos.y() < pos.y() + rect.height()) {
- rect.setBottomRight(QPointF(mousePosInRect.x(), rect.bottom() - mousePosInRect.y()));
- item->setRect(rect);
- item->setPos(QPointF(pos.x(), mousePos.y()));
- }
- break;
- case Left:
- if (mousePos.x() < pos.x() + rect.width()) {
- rect.setRight(rect.width() - mousePosInRect.x());
- item->setRect(rect);
- item->setPos(QPointF(mousePos.x(), pos.y()));
- }
- break;
- case Right:
- if (mousePos.x() > pos.x()) {
- rect.setRight(mousePosInRect.x());
- item->setRect(rect);
- }
- break;
- case BottomLeft:
- if (mousePos.x() < pos.x() + rect.width() && mousePos.y() > pos.y()) {
- rect.setBottomRight(QPointF(rect.width() - mousePosInRect.x(), mousePosInRect.y()));
- item->setRect(rect);
- item->setPos(QPointF(mousePos.x(), pos.y()));
- }
- break;
- case Bottom:
- if (mousePos.y() > pos.y()) {
- rect.setBottom(mousePosInRect.y());
- item->setRect(rect);
- }
- break;
- case BottomRight:
- if (mousePos.x() > pos.x() && mousePos.y() > pos.y()) {
- rect.setBottomRight(mousePosInRect);
- item->setRect(rect);
- }
- break;
- default:
- QPointF diff = mousePos - m_clickPoint;
- m_clickPoint = mousePos;
- item->moveBy(diff.x(), diff.y());
- break;
- }
- }
- } else {
- mousePos -= QPoint(4, 4);
- bool itemFound = false;
- QList<QGraphicsItem *> itemList = items(QRectF(mousePos, QSizeF(4, 4)).toRect());