Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: acmatuk от Январь 14, 2011, 10:19



Название: Зум работает не так как хотелось бы(((
Отправлено: acmatuk от Январь 14, 2011, 10:19
Доброутро всем.
Перейду сразу к делу)) Есть некий QGraphicsView, на котором есть некая QGraphicsScene с множеством QGraphicsItem на ней. Итемы расположены на сцене первый в точке (0,0) а остальные вокруг него. У View прописан зум, следующим образом:

Код:
void ViewScale::wheelEvent(QWheelEvent *event)
{
    setDragMode(ScrollHandDrag);
double numDegrees = event->delta() / 10.0;
    double numSteps = numDegrees / 15.0;
    double factor = std::pow(1.125, numSteps);
    scale(factor, factor);
centerOn(QCursor::pos());
update();
}

по задумке функцией "centerOn()" при зуммировании вид должен центрироваться по курсору, т.е. приближение в точку курсора
вроде все работает, но ... невсегда( когда курсор находится левее X-координаты = 0, то все работает, но вот стоит его установить правее, то зуммируется облась в положительной окрестности координаты X=0
подскажите как реализовать это, мб есть какаие то другие средства кроме centrOn ( аналогичная ensureVisible() дает тот же результат)


Название: Re: Зум работает не так как хотелось бы(((
Отправлено: GreatSnake от Январь 14, 2011, 10:27
см. QGraphicsView::setTransformationAnchor()


Название: Re: Зум работает не так как хотелось бы(((
Отправлено: acmatuk от Январь 14, 2011, 10:52
а ларчик просто открывался :D 
спасибо GreatSnake  :)