我正在尝试创建一个QGraphicsView
允许某人缩放电流QGraphicsItem
以适应QGraphicsView
窗口大小的方法。
我已经重写QGraphicsItem
以创建自定义版本,并且我实现了一些方法,因此它知道它已缩放多少(它始终与原始版本成正比,因此只有一个比例因子 - 宽度和高度相同)。
所以在scaleFactor
二传手我有以下内容:
void ImagePixmapItem::setScaleFactor(float sf){
scaleFactor = sf;
this->boundingRect().setWidth(this->boundingRect().width()*scaleFactor);
this->boundingRect().setHeight(this->boundingRect().height()*scaleFactor);
}
在我的主要形式中,我在一个按钮中有以下内容:
QRect portRect = ui->graphicsView->viewport()->rect();
double scaleFactorX;
if(portRect.width() <= (item->boundingRect().size().width()))
scaleFactorX =portRect.width() /(item->boundingRect().size().width());
else
scaleFactorX = (item->boundingRect().size().width())/portRect.width();
qDebug("Scalefactor: %4.3f \n", scaleFactorX);
qDebug("item width: %4.3f \n", item->boundingRect().size().width());
qDebug("item height: %4.3f \n", item->boundingRect().size().height());
item->setScaleFactor(scaleFactorX);
item->scale(scaleFactorX,scaleFactorX);
其中item
一个在哪里ImagePixmapItem
。
这在第一次时效果很好 - 我的图像比视口大,并且它可以很好地缩小以适合窗口(至少在宽度方面)。scaleFactorX
但是,如果我再次按下按钮,item
宽度和高度的相同值会返回。
boundingRect
转换后的图像可以更改吗?如果没有,我该怎么办?