1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
...
void MainWindow::ZoomVue(QMouseEvent *event)
{
if(event->MouseButtonPress)
{
if(event->button()==Qt::LeftButton){
if(event->modifiers()==Qt::ControlModifier)
{
maView->setDragMode(QGraphicsView::NoDrag);
m_rubberBandActive = false;
mousepressed=true;
m_lastDragPos = event->pos();
return;
}
else
{
maView->setDragMode(QGraphicsView::RubberBandDrag);
m_rubberBandOrigin = event->pos();
m_rubberBandActive = true;
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);//new rectangle band
rubberBand->setGeometry(QRect(m_rubberBandOrigin, QSize()));
rubberBand->show();
event->accept();
}
}else
{
QWidget::mousePressEvent(event);
}
}else if(event->MouseMove){
rubberBand->setGeometry(QRect(m_rubberBandOrigin, event->pos()).normalized());
QPointF delta = maView->mapToScene(event->pos()) - maView->mapToScene(m_lastDragPos);
//this->panView(delta);
QPoint viewCenter(maView->viewport()->width() / 2 + delta.x(), maView->viewport()->height() / 2 + delta.y());
QPointF newCenter = maView->mapToScene(viewCenter);
maView->centerOn(newCenter);
m_lastDragPos = event->pos();
return;
}else if(event->MouseButtonRelease){
if (m_rubberBandActive)
{
QPoint rubberBandEnd = event->pos();
QRectF zoomRectInScene;
if (m_rubberBandOrigin.x()<rubberBandEnd.x())
{
if(m_rubberBandOrigin.y()<rubberBandEnd.y())
zoomRectInScene= QRectF(maView->mapToScene(m_rubberBandOrigin),maView->mapToScene(rubberBandEnd));
else
zoomRectInScene= QRectF(maView->mapToScene(QPoint(m_rubberBandOrigin.x(),rubberBandEnd.y())),maView->mapToScene(QPoint(rubberBandEnd.x(),m_rubberBandOrigin.y())));
}else{
if(m_rubberBandOrigin.y()<rubberBandEnd.y())
zoomRectInScene = QRectF(maView->mapToScene(QPoint(rubberBandEnd.x(),m_rubberBandOrigin.y())),maView->mapToScene(QPoint(m_rubberBandOrigin.x(),rubberBandEnd.y())));
else
zoomRectInScene = QRectF(maView->mapToScene(rubberBandEnd),maView->mapToScene(m_rubberBandOrigin));
}
maView->fitInView(zoomRectInScene, Qt::KeepAspectRatio);
m_rubberBandActive = false;
}
mousepressed=false;
event->accept();
rubberBand->hide();
}
}
... |
Partager