【发布时间】:2013-07-17 15:08:05
【问题描述】:
(我使用 Qt 4.7,Windows 7,64 位)。
我创建了一个自定义表格。每行都是带有小部件的水平布局。 这些行保存在 QList 中以便于访问,子代也是如此。行也添加到父窗口小部件内。
如果我调整父窗口小部件的大小,我会计算新的大小,删除所有内容,然后重新创建。
我的问题是我不想删除任何小部件。只有当我清理桌子时,我才会这样做。
由于我在 QList 和父布局中都有小部件,如何删除每行中的所有小部件,删除所有布局,然后将它们添加到新布局中?
如果我这样做:每个布局中的每个元素的 takeAt(0) 我有一个 QLayoutItem,里面有一个小部件...如何在不删除小部件的情况下删除 layoutItem?....如何在不删除小部件的情况下删除小部件杀死它,不管它是在父母身上还是在孩子身上?因为删除的方法很多:removeItem,removeWidget...在布局中,但不是takeWidget...只是takeAt(),它给出了一个Qlayoutitem。
我尝试了几种方法,但无论小部件发生了什么,我仍然可以看到它们。
关于这个的问题:
小部件何时被删除?如果我从布局中获取Widget(index),它会在一段时间内自行删除吗?如果我在另一个列表中有指向它的指针,会发生这种情况吗?
removeAt(index) 是否执行小部件的删除方法?
【问题讨论】: