QGraphicsView fitInView边距

时间:2013-10-28 16:54:40

标签: c++ qt qgraphicsview qgraphicsscene

为什么:

graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);

无法按预期工作?它不能正确拟合场景矩形,显示它周围的边距。

3 个答案:

答案 0 :(得分:4)

原因是这样的: https://bugreports.qt.io/browse/QTBUG-42331 - 请在qt bug跟踪器上对其进行投票以确定其优先级。

简而言之,fitInView具有硬编码边距,这可能会造成各种各样的破坏 - 其中最少的是现在你丢失了几个像素的显示区域,也可能会强制进行不必要的重新缩放。

您可以通过重新实现fitInView来解决问题,基于现有的实现,但删除它的荒谬边距。基于原始的C ++版本,可以在python中找到一个例子:

https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276

答案 1 :(得分:2)

我弄清楚问题是什么,在this question中有描述。问题的主要原因是您不应在显示表单之前调用fitInView。

答案 2 :(得分:1)

您可以修复它重新实现原始的fitInView方法,但不包括边距。检查我的C ++解决方案:https://stackoverflow.com/a/42474510/6050364