在QGraphicsView中设置图片的缩小限制

Sid*_*411 4 qt qgraphicsview

我正在使用QGraphicsView缩放标签上的图像.但是当我缩小时,我想为缩小设置一个特定的限制.我使用以下代码

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

在轮子事件的插槽

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望图像在一定程度上不应缩小.我该怎么办?我尝试设置QGraphicsView的最小大小,但这没有帮助.

谢谢 :)

vah*_*cho 8

也许这样的事情会有所帮助:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这个想法是缓存当前的比例因子,如果它小于某个限制,则不会缩小.