gpt4 book ai didi

c++ - Qt - 使用 QSlider 放大/缩小

转载 作者:行者123 更新时间:2023-11-28 05:35:14 24 4
gpt4 key购买 nike

我想为 QGraphicsView 集成一个缩放 slider 。我使用 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);
}

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

我该如何解决这个问题?

最佳答案

ui->graphicsView->scale()相对 Action 。下面是我的 on_ZoomSliderValueChanged(int value),它根据当前 slider 位置缩放 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);
}

关于c++ - Qt - 使用 QSlider 放大/缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com