2013-10-21 2 views
2

QGraphicsView를 사용하여 레이블의 이미지를 확대하고 있습니다. 그러나 축소 할 때 특정 축소 제한을 설정하려고합니다. 나는 이미지가 어느 정도 후 축소되지 않도록하려면 휠 이벤트QGraphicsView에서 그림의 축소 축소 제한을 설정하십시오.

void MainWindow::wheelEvent(QWheelEvent *ZoomEvent) 
{ 
    view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); 
    double scaleFactor = 1.15; 
    if(ZoomEvent->delta() >0) 
    { 
     view->scale(scaleFactor,scaleFactor); 
    } 
    else 
    { 
     view->scale(1/scaleFactor,1/scaleFactor); 
    } 
} 

의 슬롯에 다음 코드

scene = new QGraphicsScene(this); 
view = new QGraphicsView(label); 
QPixmap pix("/root/Image); 
Scene->addPixmap(pixmap); 
view->setScene(scene); 
view->setDragMode(QGraphicsView::scrollHandDrag); 

을 사용하고 있습니다. 어떻게해야합니까? QGraphicsView의 최소 크기 설정을 시도했지만 도움이되지 않았습니다.

답변

6

어쩌면이 같은 도움이 될 당신을 :) 감사합니다

void MainWindow::wheelEvent(QWheelEvent *ZoomEvent) 
{ 
    view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); 
    static const double scaleFactor = 1.15; 
    static double currentScale = 1.0; // stores the current scale value. 
    static const double scaleMin = .1; // defines the min scale limit. 

    if(ZoomEvent->delta() > 0) { 
     view->scale(scaleFactor, scaleFactor); 
     currentScale *= scaleFactor; 
    } else if (currentScale > scaleMin) { 
     view->scale(1/scaleFactor, 1/scaleFactor); 
     currentScale /= scaleFactor; 
    } 
} 

아이디어를, 당신이 볼 수 있듯이, 현재의 규모 계수를 캐싱과 작은 경우 축소하지 않습니다 어떤 한계보다.

+0

고맙습니다. :) – Sid411

관련 문제