Qt - 使用 QSlider 缩放 in/out

Qt - zoom in/out with QSlider

我想为 QGraphicsView 集成缩放滑块。我使用 QGraphicsView::scale() 进行缩放。

这是我的代码:

    void MainWindow::on_sld_zoom_valueChanged(int value)
{
    ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
    double scaleFactor;
    scaleFactor = pow(1.1,((value - 100) / 100.0));
    ui->graphicsView->scale(scaleFactor,scaleFactor);
}

我的最小滑块值为 1,最大值为 200,当值为 100 时,我的 scaleFactor 为 1 根据我的 function.But 如果 scaleFactor 大于 1,滑块总是放大。例如,当我将值从 150 更改为 149,它应该缩小但不是,因为缩放因子大于 1.

我该如何解决这个问题?

ui->graphicsView->scale()相对的动作。 下面是我的 on_ZoomSliderValueChanged(int value),它根据当前滑块位置缩放 QGraphicsView。 希望对您有所帮助(您可能需要根据您想要的曲线重新计算 newScale):

void PictureWindow::on_ZoomSliderValueChanged(int value)
{
    qreal newScale = qPow(m_pPimpl->m_ZoomFactor, value);

    QMatrix matrix;
    matrix.scale(newScale, newScale);

    ui->graphicsView->setResizeAnchor(QGraphicsView::ViewportAnchor(m_pPimpl->m_ViewportAnchor));
    ui->graphicsView->setMatrix(matrix);
}