动态地将自定义 qt 小部件添加到框架中,而无需每次都更改布局

Dynamically adding custom qt widgets to a frame without having the layout changing every time

本文关键字:布局 qt 自定义 小部 框架 添加 动态      更新时间:2023-10-16

>我目前正在QT中构建一个程序,其中我在一个框架中有几个自定义小部件,按下按钮后,更多将进入框架。我已经实现了自己的功能来在框架周围拖动和移动它们,并且一切正常,但问题是:当我屏幕上已经有一些从其初始位置移动的小部件并且我去向布局添加另一个小部件时,整个布局会重置其下方每个小部件的位置。

我一直在使用.move(x,y)来移动它们,并使用.addWidget(我的小部件)作为将小部件添加到布局中的方式。

有没有办法防止这种情况,或者某种解决方法?或者,如果没有别的,还有其他方法可以将它们添加到添加新框架时它们不会自动移动的框架中?

我在某种程度上解决了我的问题,但这有点变通办法。由于当新的小部件被添加到布局中时,布局会重新绘制它们,以便它们与设置的参数间隔开/对齐,我试图通过为每个小部件保存其 x,y 坐标来补偿此功能,并在将新小部件添加到布局后立即将它们移回。

最初的努力是徒劳的,因为布局以某种方式检测到这个或其他东西,并立即将它们移回。然而,这就是我解决它的方式 - 我只是使用了一个堆叠小部件。添加新小部件时,它仍然会尝试以一些间距自动定向每个小部件,但是我的小 for 循环将每个子小部件重新移回(我没有更改任何内容)现在可以工作了。