удалить все QSpacerItem из макета

Я добавил QSpacerItem к макету, используя его addStretch() метод.

layout->addStretch(1);

теперь я хотел бы удалить это, но у меня не было никакой ссылки на это.

как я могу просмотреть все QLayoutItem и только удалить QSpacerItem ?

3

Решение

Я бы лично написал это:

for (int i = 0; i < layout->count(); ++i) {
QLayoutItem *layoutItem = layout->itemAt(i);
if (layoutItem->spacerItem()) {
layout->removeItem(layoutItem);
// You could also use: layout->takeAt(i);
delete layoutItem;
--i;
}
}

Итак, логика была бы в двух словах, если код не дает понять:

  • Посмотрите все элементы макета.

  • Проверьте, является ли это элементом распорки.

  • Если это так, удалите его.

6

Другие решения


По вопросам рекламы [email protected]