gpt4 book ai didi

python - Qt:让所有 child 都在 parent 的区域内

转载 作者:行者123 更新时间:2023-11-28 16:45:51 24 4
gpt4 key购买 nike

这是我的第一个问题,请耐心等待!

目前在我的程序中,我有一个充当 Canvas 的父小部件。用户可以在运行时向父级添加或删除小部件。这些小部件然后被赋予绝对位置,也就是说,它们不是由布局定位的。添加后,用户可以任意移动小部件。

我希望用户能够通过在它们周围拖出一个框来选择一组小部件。我已经编写了在用户拖动时显示矩形的部分。现在,我希望能够检索该矩形(区域)内的所有小部件。

我知道 findChild() 和 findChildren() 函数,它们确实会按预期返回子项。但我真正需要的是一种将搜索限制在区域边界的方法,因为“ Canvas ”中很可能会有很多小部件。 (由于我正在做的事情的性质,可能有成千上万的小部件分布在一个非常大的区域!)

这是我的问题:我最好的选择是什么?我是否应该继续使用 findChildren() 并循环遍历列表以手动查找区域内的子项。或者我应该使用 findChild(x, y) 遍历区域内的所有像素吗?或者也许有一个更简单的解决方案可以加快这个过程?类似于 findChildren(x, y, width, height)?

希望我的问题是有道理的。我尽力解释事情。谢谢!

最佳答案

如果您使用 QGraphicsScene 而不是自己滚动,您可以使用 items(..) 方法非常有效地在特定区域找到您的 child 。

只有在 QGraphicsScene 中才有可能,因为它使用 BSP 空间加速结构,所以如果您不能在合理的时间内迁移到 QGraphicsScene - 您将拥有写你自己的。这并不像听起来那么难,我已经编写了许多边界体积层次结构,它们非常简单。

关于python - Qt:让所有 child 都在 parent 的区域内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924980/

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