Масштабирование работает только в одну сторону с QTransform? - PullRequest
0 голосов
/ 23 мая 2011

У меня проблема с масштабированием изображения в QT.У меня есть GraphicsView с отображаемым изображением, и я вставил ползунок, чтобы позволить пользователю увеличивать и уменьшать масштаб.Для этого я использовал функцию масштабирования класса QTransform для достижения этой цели.Обычно это работает, если я увеличиваю, то есть, если значение становится все больше и больше.Однако, когда я иду в противоположном направлении (уменьшая и уменьшая значение), все изображение исчезает.Увеличение масштаба также не решает проблему;все изображение больше не присутствует, независимо от того, насколько я увеличил или уменьшил масштаб.Ниже приведены фрагменты моего кода.

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 Ответ

2 голосов
/ 23 мая 2011

Выражение 1 / (- (значение-1)) оценивается как INTEGER, которое в вашем случае всегда равно нулю. Попробуйте использовать 1.0 / (- (значение-1)). Кроме того, я не очень знаком со слайдерами, но не понимаю, почему значение может быть отрицательным. Сигнал valueChanged идет с фактическим значением, а не с дельтой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...