C++ 尝试缩放图像时出现setTransformOriginPoint错误

C++ 尝试缩放图像时出现setTransformOriginPoint错误,c++,qt,qt4,C++,Qt,Qt4,我已经通过扩展QGraphicsItem创建了我自己的类,我想这样做,当有人在这个项目上做一个轮子时,它会伸缩 这样,我可以在一个场景中有多个项目,并根据自己的喜好缩放每个项目 问题是,我希望项目在鼠标光标下缩放,就像谷歌地图一样。也就是说,向前移动将继续平移图像并缩放它,因此鼠标指针周围的区域始终可见 void ImagePixmapItem::wheelEvent ( QGraphicsSceneWheelEvent * event ){ update(); qreal f

我已经通过扩展QGraphicsItem创建了我自己的类,我想这样做,当有人在这个项目上做一个轮子时,它会伸缩

这样,我可以在一个场景中有多个项目,并根据自己的喜好缩放每个项目

问题是,我希望项目在鼠标光标下缩放,就像谷歌地图一样。也就是说,向前移动将继续平移图像并缩放它,因此鼠标指针周围的区域始终可见

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());

}
void ImagePixmapItem::wheelEvent(QGraphicsCeneWheelEvent*事件){
更新();
qreal系数=1.2;
如果(事件->增量()<0)
系数=1.0/系数;
尺度(因子,因子);
scaleFactor*=因子;
this->scene()->setscen直立(0,0,this->boundingRect().width(),this->boundingRect().height());
}
这是我用来做比例的代码。问题是,它似乎总是从左上角开始缩放。嗯,这是不可取的,因为如果我放大或缩小太多,最终我的鼠标指针周围的感兴趣区域已经离开屏幕,我必须手动滚动或平移到位置、缩放、平移等,直到达到所需的水平

我尝试使用QGraphicsItem::setTransformOriginPoint,但无论我在其中输入了什么值,它似乎仍然可以从左上角进行缩放


我可以在我发布的代码中添加什么来获得所需的效果?

我在图像处理应用程序中实现了类似的功能(缩放视图并使鼠标下方的区域保持在位和可见),但我缩放整个图形视图,而不是特定的项目,因此我不知道此代码是否可以解决您的问题

无论如何,这就是我在子类QGraphicsView的构造函数中所做的(在设置场景之后):

每次调用后,我还使用上述函数: MyGraphicsView->setTransform(转换)


我不确定这是否能帮助您,但我希望如此。

只是为了澄清……您是说在场景图中扩展或缩小一个项目,同时保持其他项目的原始大小,还是放大和缩小整个场景视图?场景中的项目。通过这种方式,我可以在场景中有多个项目,处于不同的缩放级别。如何调用setTransformOriginPoint?使用我的QGraphicsCeneWheelEvent:This->setTransformOriginPoint(事件->pos().x(),事件->pos().y());
setTransformationAnchor(AnchorUnderMouse);
setResizeAnchor(AnchorViewCenter);