Как удалить все виджеты со слоя (компоновщика) Qt

97
09 декабря 2020, 01:30

У меня есть слой, который заполняется виджетами

clickbleLabel *noteNameLbl = new clickbleLabel[info->amountNotes];
for(int i = 0; i < info->amountNotes; i++)
{
    noteNameLbl[i].setText(info->notes[i].name);
    showNotesLay->addWidget(&noteNameLbl[i]);
}

слой showNotesLbl определен ранее

QGridLayout *showNotesLay = new QGridLayout;

clickbleLabet - наследний от QLabel, который посылает сигнал, когда на его нажимают

У меня есть функция:

void GUI::clianNoteSlot()
{
 while(QLayoutItem *tmpItem = showNotesLay->takeAt(0))
    {
        delete tmpItem->widget();
        delete tmpItem;
    }
}

которая должна удалять все виджеты, но при выполнении

delete tmpItem->widget();

программа аварийно завершается с сообщением:

То есть при выполнении

delete tmpItem->widget();

отладчик переходит в

clickbleLabel

Без понятия, как это исправить

Answer 1

Их также нужно удалять с самого слоя:

while(QLayoutItem *tmpItem = showNotesLay->itemAt(0)) {
    showNotesLay->removeItem(tmpItem);
    showNotesLay->removeWidget(tmpItem->widget());
    delete tmpItem->widget();
    delete tmpItem;
}
showNotesLay->update();
READ ALSO
в QInputDialog выводит запятую вместо точки для getDouble

в QInputDialog выводит запятую вместо точки для getDouble

Подскажите пожалуйста - использую для ввода десятичного числа, почему-то по умолчанию выводит вместо точки запятую, хотя в обучалках показывает...

107
Перестал работать QWebSocket

Перестал работать QWebSocket

Клиент на qt перестал подключаться к вебсокету, хотя сервер работает исправноК серверу подключен cloudflare, подключение осуществляется через...

99
Поддержка Windows XP в Visual Studio 2019

Поддержка Windows XP в Visual Studio 2019

После установки свежей VS 2019 заметил, что отсутствует возможность выбрать Windows XP Support в настройках проекта (v141_xp toolset раньше назывался)Эту фичу...

132
Использование fopen_s в внешней функции

Использование fopen_s в внешней функции

Чего-то накосячил в следующей функции:

130