【问题标题】:QGraphicsView fitInView marginsQGraphicsView fitInView 边距
【发布时间】:2013-10-28 16:54:40
【问题描述】:

为什么会这样:

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

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

【问题讨论】:

  • 添加一个最小的代码示例和一个屏幕截图,以及它与您的预期有何不同。

标签: c++ qt qgraphicsview qgraphicsscene


【解决方案1】:

原因是这样的: https://bugreports.qt.io/browse/QTBUG-42331 - 请在 qt 错误跟踪器上投票以提高其优先级。

简而言之,fitInView 具有硬编码的边距,这可能会导致各种破坏 - 最不重要的是现在您会丢失几个像素的显示区域,并且还可能会强制进行不必要的重新缩放。

您可以通过在现有实现的基础上重新实现 fitInView 来解决此问题,但移除它的可笑边距。基于原始 C++ 版本的 python 中提供了一个示例:

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

【讨论】:

    【解决方案2】:

    我发现了问题所在,它在this question 中有描述。问题的主要原因是您不应该在显示表单之前调用 fitInView。

    【讨论】:

    • 实际上,这完全取决于您所说的边距是什么意思,我想既然您还问了这个问题,那么在您链接的问题中可能是这些巨大的问题。无论如何,您可以在显示表单之前调用 fitInView 。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多