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