我有一个QGridLayout
添加自定义的地方QWidgets
。
当我尝试删除所有它们时,它们应该从布局中删除(因为函数layout.count()
返回 0),但它们仍然显示在界面中,我可以与它们交互。
在这里,您可以使用我添加小部件的方式:
void MyClass::addCustomWidget(CustomWidget *_widget, int r, int c)
{
layout->addWidget(_widget, r, c);
_widget->show();
}
这里是我删除它们的方式:
void MyClass::clearLayout()
{
qDebug() << "Layout count before clearing it: " << layout->count();
int count = layout->count();
int colums = layout->columnCount();
int rows = layout->rowCount();
int i=0;
for(int j=0; j<rows; j++)
{
for(int k=0; k<colums && i<count; k++)
{
i++;
qDebug() << "Removing item at: " << j << "," << k;
QLayoutItem* item = layout->itemAtPosition(j, k);
if (!item) continue;
if (item->widget()) {
layout->removeWidget(item->widget());
} else {
layout->removeItem(item);
}
qDebug() << "Removed!";
}
}
qDebug() << "Layout count after clearing it: " << layout->count();
}
从 QGridLayout 中正确删除项目/小部件的任何帮助或提示?
PD:我在互联网上看到很多人在将小部件从布局中删除后直接删除(删除_widget)。就我而言,这是不可能的,因为我需要在内存中保留这些小部件。