Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Fregloin от Июнь 30, 2011, 17:16



Название: Scaling в QGraphicsView
Отправлено: Fregloin от Июнь 30, 2011, 17:16
Возника проблема с масштабированием. Из книги Бланшетт взял пример масштабирование при прокрутки колесика мыши
Код:
void            QEditorView::wheelEvent(QWheelEvent *event)
{
    qreal   numDegrees = event->delta()/8.0;
    qreal   numSteps = numDegrees/15.0;
    qreal   factor =  qPow(1.5,numSteps);
    if(factor>=.4 && factor<=2)
    {
        scale(factor,factor);
    }
    event->accept();
}
Все работает, но одна беда, после того как сделать масштабирование в большую, меньшую сторону - точность указателя мыши в координатах сцены начинает плавать, и она уже перемещается не с точностью до пиксела, а +- погрешность (0.3 или 1.5 к примеру пиксела).
Проблема видна после того, когда при увеличенном масштабе создаю, двигаю и изменяю объекты, при возвращении в исходный масштаб они выглядят кривовато.
На картинке это четко видно.
Сглаживание помогает, но на некоторых картах оно не работает, поэтому нужно что бы не было этих погрешностей. Как этого добиться?