首页 文章

QGraphicsView使场景比例达到全宽

提问于
浏览
3

我将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)

2 回答

  • 0

    你看过QGraphicsView::fitInView()吗?此方法将自动为您执行所需的比例计算 .

  • 6

    显然,当在qDebug中使用错误的格式时,输出是不可预测的 . 使用时:

    qDebug("geo: %i %i", geometry().width(), geometry().height());
    

    确实显示了正确的尺寸 .

相关问题