2012-03-11 74 views
0

我正在使用QGraphicsView/QGraphicsScene来显示图像。图像始终显示为其原始大小,并在两端显示滚动条。我希望QGraphicsView根据窗口保持纵横比的大小自动调整图像。 我试过,但什么都没有发生:如何在QGraphicsView/QGraphicsScene中查看像素图而不改变纵横比

ui->graphicsView->fitInView(0,0,ui->graphicsView->width(),ui->graphicsView->height(),Qt::KeepAspectRatio); 
+0

你在哪里叫这个方法? (在构造函数中,某些几何数据无效。)Qt文档建议在'resizeEvent'中使用它。如果你用常量调用它,它会起作用吗? ('fitInView(0,0,100,100,Qt :: KeepAspectRatio);') – sgibb 2012-03-11 11:26:44

+0

是的,我在构造函数中调用它(至少它应该工作一次),我也尝试了常量值,但没有效果 – 2012-03-11 11:53:57

回答

11

您提供的视图的矩形,不是现场的。

这应该工作:

ui->graphicsView->fitInView(scene->itemsBoundingRect() ,Qt::KeepAspectRatio); 

itemsBoundingRect计算并返回现场的所有项目的边界矩形。所以graphicsview的视图矩阵将被缩放以适应场景的内容。

我建议你重新实现resizeEvent并且在那里也有这个调用。