Имам 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. : Виждал съм в интернет, че много хора изтриват джаджата директно (delete _widget), след като са ги премахнали от оформлението. В моя случай не е възможно, тъй като трябва да поддържам тези джаджи в паметта.