gpt4 book ai didi

qt - 在 Qt 图形 View 中获取固定大小项目的边界框

转载 作者:行者123 更新时间:2023-12-04 18:36:16 25 4
gpt4 key购买 nike

我需要获取设置了 QGraphicsItem::ItemIgnoresTransformations 标志的 QGraphicsItem 的边界框(在场景空间中)。

根据文档,您需要使用 QGraphicsItem::deviceTransform()要做到这一点。我试过这个:

// Get the viewport => scene transform
vp_trans = view.viewportTransform();
// Get the item => viewport transform
trans = item.deviceTransform(vp_trans);
// Get the item's bounding box in item's space
bbox = item.boundingRect();
// Map it to viewport space
bbox = trans.mapRect(bbox);
// Map it back to scene's space
bbox = vp_trans.mapRect(bbox);

但是有些不对劲,边界框看起来更小,而且离项目的右侧很远...

最佳答案

刚刚弄清楚,QGraphicsView::viewportTransform() 文档说“返回一个将视口(viewport)坐标映射到场景坐标的矩阵”,但实际上它返回场景视口(viewport)转换。

在最后一步反转 vp_trans 解决了我的问题。

关于qt - 在 Qt 图形 View 中获取固定大小项目的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com