QGraphicsItem::boundingRect()是否包含子边界rect ?
Should QGraphicsItem::boundingRect() include child bounding rects?
谷歌显示应该是。
但是dragdroprobot示例实现(在父Robot对象上)建议不要:
QRectF Robot::boundingRect() const
{
return QRectF();
}
哪个是正确的,还是有更微妙的事情在发生?
子元素由场景直接绘制,而不是父元素,并且根据boundingRect()
的文档:
QGraphicsView使用它来确定项目是否需要重绘。
所以,如果在父元素中没有绘图要做,就不需要返回一个非空的边界矩形,即使父元素有子元素。如果父元素中有绘图,它只需要包含自己的边界矩形
在正常情况下,QGraphicsItem的子元素被包含在它的边界矩形中,但根据您的实现,我认为这是不需要的。
如果你需要一个项目的子元素的边界矩形,你可以简单地使用
QGraphicsItem::childrenBoundingRect();
可能相关:
-
QGraphicItemGroup
则不同。
文档说:
QGraphicsItemGroup的boundingRect()函数返回项目组中所有项目的边界矩形。
(然而,文档没有说boundingRect被重新实现,尽管QGraphicsItemGroup继承了QGraphicsItem。这可能是文档中的一个缺陷。
-
QGraphicItem.shape()
似乎与boundingRect()
相似,因为视图在每个实例中调用它(为了选择QGraphicsView.items()
,类似于boundingRect()
被调用以确定需要重新绘制的内容)。
据我所知,QGraphicItemGroup.shape()
从未被QGraphicsView.items()
调用过。文档没有说它被重新实现。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- std::当在256字节边界上写入整数时,流的奇怪行为
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- 检查子对象的地址是否在包含对象的边界内是否合法
- #if 条件区域是否可以跨越包含文件边界
- 三次方贝塞尔曲线是否完全包含在控制点的边界框中?
- QGraphicsItem::boundingRect()是否包含子边界rect ?