16,203
社区成员
发帖
与我相关
我的任务
分享
void MyGraphicsView::CalculateViewportGeometry()
{
QRect rectScene = scene()->itemsBoundingRect().toRect();
QRect rectViewport;
if (horizontalScrollBar()->isHidden()) {
rectViewport.setX(rectScene.x());
rectViewport.setWidth(rectScene.width());
} else {
int nScaleWidth = horizontalScrollBar()->pageStep() + horizontalScrollBar()->maximum();
double dScaleRate = double(nScaleWidth) / rectScene.width();
rectViewport.setX(horizontalScrollBar()->value() / dScaleRate);
rectViewport.setWidth(horizontalScrollBar()->pageStep() / dScaleRate);
}
if (verticalScrollBar()->isHidden()) {
rectViewport.setY(0);
rectViewport.setHeight(rectScene.height());
} else {
int nScaleHeight = verticalScrollBar()->pageStep() + verticalScrollBar()->maximum();
double dScaleRate = double(nScaleHeight) / rectScene.height();
rectViewport.setY(verticalScrollBar()->value() / dScaleRate);
rectViewport.setHeight(verticalScrollBar()->pageStep() / dScaleRate);
}
emit setPreviewRect(rectViewport);
}