【发布时间】:2013-10-28 16:54:40
【问题描述】:
为什么会这样:
graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
没有按预期工作?它没有正确拟合场景矩形,显示它周围的边距。
【问题讨论】:
-
添加一个最小的代码示例和一个屏幕截图,以及它与您的预期有何不同。
标签: c++ qt qgraphicsview qgraphicsscene
为什么会这样:
graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
没有按预期工作?它没有正确拟合场景矩形,显示它周围的边距。
【问题讨论】:
标签: c++ qt qgraphicsview qgraphicsscene
原因是这样的: https://bugreports.qt.io/browse/QTBUG-42331 - 请在 qt 错误跟踪器上投票以提高其优先级。
简而言之,fitInView 具有硬编码的边距,这可能会导致各种破坏 - 最不重要的是现在您会丢失几个像素的显示区域,并且还可能会强制进行不必要的重新缩放。
您可以通过在现有实现的基础上重新实现 fitInView 来解决此问题,但移除它的可笑边距。基于原始 C++ 版本的 python 中提供了一个示例:
https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276
【讨论】:
我发现了问题所在,它在this question 中有描述。问题的主要原因是您不应该在显示表单之前调用 fitInView。
【讨论】:
您可以通过重新实现原始 fitInView 方法来修复它,但不包括边距。检查我的 C++ 解决方案:https://stackoverflow.com/a/42474510/6050364
【讨论】: