缩放仅适用于QTransform的一种方式?

时间:2011-05-23 02:10:22

标签: qt scaling

我在QT中缩放图像时遇到问题。我有一个显示图像的GraphicsView,我放入了一个滑块,可以让用户放大和缩小。为此,我一直在使用QTransform类的scale函数来实现这一点。它通常可以放大,即,如果值越来越大。但是,当我走向相反的方向(使值越来越小)时,整个图像消失。重新放大并不能解决问题;无论我放大或缩小多少,整个图像都不再存在。所以以下是我的代码的片段。

void MainWindow::on_ZoomSlider_valueChanged(int value)
{
  QTransform transformer;
  transformer.scale(scaler(value),scaler(value));
  ui->graphicsView->setTransform(transformer);
}

qreal MainWindow::scaler(int value)
{
    if(value < 0)
        return  1/(-(value-1));
    else if(value >0)
        return value+1;
    else
        return value+1;
}

如果能帮助我弄清楚什么是错的话,我很乐意为我的问题提供更多说明。

1 个答案:

答案 0 :(得分:2)

1 /( - (value-1))表达式的计算结果为INTEGER,在您的情况下始终为零。尝试使用1.0 /( - (value-1))。 另外,我并不熟悉滑块,但我不明白为什么价值可能是负面的。 valueChanged信号带有实际值,而不是delta。