123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #include "CameraItemView.h"
- #include "MfcLabel.h"
- #include <qgraphicsitem.h>
- CameraItemView::CameraItemView(QWidget* parent)
- {
- //set the flags
- m_bMousePressed = false;
- //set the scale
- m_fViewScaleX = 1.0f;
- m_fViewScaleY = 1.0f;
- //set the parent pointer
- this->setParent(parent);
- //get the view port center
- m_ViewCenterPoint = this->viewport()->rect().center();
- this->scale(m_fViewScaleX, m_fViewScaleY);
- }
- CameraItemView::~CameraItemView()
- {
- }
- void CameraItemView::mousePressEvent(QMouseEvent* event)
- {
-
- m_bMousePressed = true;
- QPoint Pt = event->pos();
- //MfcLabel::fRect CurrentViewRect = this->geometry();
- if (m_bMousePressed && (event->buttons() & Qt::LeftButton))//&& CurrentViewRect.JudgePtInRectBoxOrNot(MfcLabel::fPoint(Pt.x(),Pt.y())))
- {
- m_ViewCenterPoint = mapToScene(event->pos()) - event->pos() + QPointF(width() / 2, height() / 2);
- m_MousePressPoint = Pt;
- }
- if (event->buttons() & Qt::RightButton) {
- // 鼠标右键被点击,执行相应的操作
-
- QGraphicsItem* Item = nullptr;
- foreach(QGraphicsItem * item, scene()->items())
- {
- if (item->isSelected())
- {
- Item = item;
- break;
- }
- }
- if (Item == nullptr)
- Item = scene()->items().front();
-
- centerOn(Item);
- m_fViewScaleX = 2 / m_fViewScaleX;
- m_fViewScaleY = 2 / m_fViewScaleY;
-
- scale(m_fViewScaleX, m_fViewScaleY);
- m_fViewScaleX = 2;
- m_fViewScaleY = 2;
- }
- QGraphicsView::mousePressEvent(event);
- }
- void CameraItemView::mouseReleaseEvent(QMouseEvent* event)
- {
- m_bMousePressed = false;
- m_MousePressPoint = QPoint(0, 0);
- }
- void CameraItemView::mouseMoveEvent(QMouseEvent* event)
- {
- QPoint Pt = event->pos();
- MfcLabel::fRect CurrentViewRect = this->geometry();
- if (m_bMousePressed)//&& CurrentViewRect.JudgePtInRectBoxOrNot(MfcLabel::fPoint(Pt.x(), Pt.y())))
- {
- QPoint CurrentPoint = Pt;
- CurrentPoint = CurrentPoint - m_MousePressPoint.toPoint();
- m_MouseMoveCurrentPoint = CurrentPoint;
- //m_ViewCenterPoint = m_ViewCenterPoint - m_MouseMoveCurrentPoint;
- //QPoint CurrentTopLeftPt = this->viewport()->rect().topLeft();
- this->centerOn(m_ViewCenterPoint);
- setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
- centerOn(m_ViewCenterPoint - m_MouseMoveCurrentPoint);
- }
-
- }
- void CameraItemView::wheelEvent(QWheelEvent* event)
- {
- QPoint Pt = event->pos();
- MfcLabel::fRect ViewPortRect;// GraphicsRect, GraphicsRect2;
- ViewPortRect = this->geometry();
- if (event->delta() < 0)
- {
- if (m_fViewScaleX < 0.2 || m_fViewScaleY <0.2)
- return;
- m_fViewScaleX /= 2;
- m_fViewScaleY /= 2;
- this->scale(0.5, 0.5);
- }
- else if(event->delta() > 0)
- {
- if (m_fViewScaleX > 2 || m_fViewScaleY > 2)
- return;
- m_fViewScaleX *= 2;
- m_fViewScaleY *= 2;
- this->scale(2, 2);
- }
-
- }
|