我继承了QGraphicsView,并在我的布局中显示了这个小部件。在视图中,我自然有QGraphicsScene。
我可以很好地检索QGraphicsScene大小(即像我设置的2100x2970 ),但是QGraphicsView小部件的几何形状是不正确的。每当我调整主窗口的大小时,布局都会发生变化,视图小部件也会发生变化。当然,QGraphicsScene的大小是无关紧要的,无论它是什么,都保持不变。但是通过视口显示滚动条和场景的小部件并没有为我提供正确的小部件宽度和高度。
在QtDesigner中,QGraphicsView小部件的QWidget几何尺寸为1126x643。但是我永远不能在子类化的QGraphicsView类中检索这些值。
当我知道宽度(调整主窗口大小时为1126或其他值)时,我可以计算视图的比例因子(比例因子=1126/ 2100),以使场景覆盖视图小部件的整个宽度。
在QGraphicsView中:
qDebug("scene: %f %f", scene()->width(), scene()->height()); // works (2100x2970)
qDebug("geo: %f %f", geometry().width(), geometry().height()); // does not (0x2970)发布于 2011-09-25 00:03:33
你看过QGraphicsView::fitInView()吗?此方法将自动为您执行所需的比例计算。
发布于 2011-09-24 21:13:52
显然,当在qDebug中使用错误的格式时,输出是不可预测的。使用时:
qDebug("geo: %i %i", geometry().width(), geometry().height());实际上,显示了正确的大小。
https://stackoverflow.com/questions/7538703
复制相似问题