Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Qt:获取父级区域内的所有子级_Python_Qt_Pyqt - Fatal编程技术网

Python Qt:获取父级区域内的所有子级

Python Qt:获取父级区域内的所有子级,python,qt,pyqt,Python,Qt,Pyqt,这是我的第一个问题,请耐心听我说 目前在我的程序中,我有一个作为画布的父窗口小部件。用户可以在运行时向父级添加或删除小部件。然后,这些小部件会被赋予一个绝对位置,也就是说,它们不会被布局定位。一旦添加,用户可以任意移动小部件 我希望用户能够通过拖动一个框来选择一组小部件。我已经对用户拖动时显示矩形的部分进行了编码。现在,我希望能够检索该矩形(区域)内的所有小部件 我知道findChild()和findChildren()函数,它们确实按照预期返回子级。但我真正需要的是一种将搜索限制在区域边界的方

这是我的第一个问题,请耐心听我说

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

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

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

我的问题是:我的最佳选择是什么?我是否应该继续使用findChildren()并在列表中循环以手动查找该区域中的子对象。或者我应该使用findChild(x,y)遍历区域内的所有像素吗?或者也许有一个更简单的解决方案可以加速这个过程?沿着孩子们的路线(x,y,宽度,高度)的东西


希望我的问题有意义。我尽可能地解释事情。谢谢

如果您使用
qgraphicscene
而不是自己滚动,那么您可以使用
items(…)
方法非常有效地在特定区域找到您的孩子


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

哪一个是您的父窗口小部件?请发布一个可管理的实际代码版本。这只是我制作的一个自定义小部件,它扩展了QWidget,并完成了自己的绘图。它捕捉到一些老鼠事件来做一些有趣的事情。没什么太复杂的。当我初始化一个子对象时,我将父对象作为参数,然后在绝对坐标中指定它们的位置。我会尝试把我的代码的一个可管理的版本放在一起,当我完成后,我会更新我的帖子。成千上万的小部件?那就是。。。很多从你所描述的,听起来更合适。哇!看起来这正是我要找的!我将尝试一下,然后我会将您的回答标记为已解决。谢谢