Qt - 使用 QTransform(或类似的),将内部 QRect 缩放到 QGraphics/从 QGraphics

Posted

技术标签:

【中文标题】Qt - 使用 QTransform(或类似的),将内部 QRect 缩放到 QGraphics/从 QGraphics【英文标题】:Qt - Using a QTransform (or similar), scale inner QRect to/from QGraphics 【发布时间】:2014-05-16 15:19:36 【问题描述】:

一些背景 - 假设您有 QGraphicsScene,并且只有一个视图,即与场景的 1-1 比例。 您有一个 QRect A,它表示场景的外部视图,具有预定义的像素大小。 您有一个 QRect A1,它是 A 内部的一个较小的矩形。

如何将 A1 转换为场景,使其正确缩放(即,如果它是矩形 A 的 1/4,它将占据场景的 1/4),然后撤消该变换以缩放创建的矩形在场景中正确适合矩形 A?

我可以做所有这些蛮力,但我想知道是否有办法使用 Qt 的内置类...

【问题讨论】:

【参考方案1】:

在查看了一些示例以尝试找到类似的用途后,我意识到我完全没有抓住重点 - 我可以直接将 A/A1 设置到场景中,然后缩放 视图(通过直到现在 QGraphicsView::fitInView(..)) 完全明显但不知何故被完全忽略以适应里面的矩形。无需进行矩形变换。总“呃”的时刻。 :)

在与视图交互时,我需要转换鼠标点击和视图中的点,但是有一整套很好的 mapTo* mapFrom* 可以很好地处理这个问题。

TL;DR - 使用 fitInView()

【讨论】:

感谢您的提示!这让我发疯了

以上是关于Qt - 使用 QTransform(或类似的),将内部 QRect 缩放到 QGraphics/从 QGraphics的主要内容,如果未能解决你的问题,请参考以下文章

Qt3D:根据实体和相机之间的距离缩放实体大小

QT开发(十五)——QT坐标系统

QTransform 比例和 boundingRect.size() 之间的关系

QPainterPath QTransform::map

Qt 属性浏览器框架或 python 中的类似工具

想要在 Qt 中存储配置文件、使用 SQLite 或其他方式?