我有一個QGridLayout
我在那裏添加我的自定義QWidgets
。從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正確刪除項目/部件?
P.D. :我在互聯網上看到很多人直接從佈局中刪除它們(刪除_widget)後刪除它們。在我的情況下,這是不可能的,因爲我需要保存在內存中的小部件。
可能重複(http://stackoverflow.com/questions/5395266/removed-widgets-from-qgridlayout) – emkey08