Я создал свой собственный класс, расширив QGraphicsItem, и я хочу сделать так, чтобы, когда кто-то делает колесо, даже когда над этим элементом, он масштабировался.
Таким образом, я могу иметь несколько элементов всцену, и масштабируйте каждый из них как угодно.
Проблема в том, что я хочу, чтобы элемент масштабировался под курсором мыши, так же, как это делают карты Google.То есть движение вперед будет продолжать панорамирование изображения и его масштабирование, так что область вокруг моего указателя мыши всегда будет видна.
void ImagePixmapItem::wheelEvent ( QGraphicsSceneWheelEvent * event ){
update();
qreal factor = 1.2;
if (event->delta() < 0)
factor = 1.0 / factor;
scale(factor, factor);
scaleFactor *=factor;
this->scene()->setSceneRect(0,0,this->boundingRect().width(), this->boundingRect().height());
}
Это код, который я использую для выполнениямасштаб.Проблема в том, что он всегда масштабируется из левого верхнего угла.Что ж, это нежелательно, потому что, если я увеличиваю или уменьшаю масштаб, в конечном итоге моя область интереса вокруг указателя мыши переместилась за пределы экрана, и мне нужно либо прокрутить вручную, либо выполнить панорамирование до местоположения, масштабирование, панорамирование и т. Д.,пока я не доберусь до желаемого уровня.
Я пытался использовать QGraphicsItem :: setTransformOriginPoint, но независимо от того, какие значения я там ввел, он все равно кажется масштабированным и таким сверху слева.
Что я могу добавить к тому коду, который я разместил, чтобы получить желаемый эффект?