我正在尝试编写一个布局管理器,它能够显示所有添加的小部件、过滤它们或调整其中一些小部件的大小。我有一个 QWidget 子类,它具有小部件的 currentList、所有小部件的列表、上次更改之前显示的小部件的 prevList。它还有一个 currentGrid(QGridLayout*) 相应地显示小部件和 mainLayout 保存网格和一些按钮。
如果发生更改,我会调用 updateLayout 函数,其摘要如下: - 从 currentGrid 填充 prevList - 清除并删除 mainLayout - 清除 currentGrid - 从 currentList 填充 currentGrid - 创建新的 mainLayout - addButtons - 添加 currentGrid
当我只添加 1 个小部件时,它工作得很好。当我尝试添加第二个时,它给出了一个段错误。
这是我清除 mainLayout 的方法
if(mainLayout) //clear mainLayout
{
while(mainLayout->count() > 0)
mainLayout->takeAt(0);
delete mainLayout;
}
这是此代码的下一行,发生段错误的位置由 (-->) 显示。
if(currentGrid)
{
-->while(currentGrid->count() > 0)
{
currentGrid->takeAt(0);
}
}