моя программа продолжает сбой с кодом возврата 0. Причина в моем qtabwidget, но я не могу найти ошибку.delete qtabwidget
QTabWidget *layout_tabs;
// create tabs
void myclass::fill_tabs(void)
{
kill_tabs(); // remove old tabs
layout_tabs = new QTabWidget();
// program adds content into a few tabs, like:
// widgets created, content created, put into layout, put into widget..
layout_tabs->addTab(widget, "description");
layout_tabs->addTab(widget2, "description2");
layout_tabs->show();
}
void myclass::kill_tabs(void)
{
if(layout_tabs==nullptr)
return;
layout_tabs->hide();
QWidget *window;
for (int i=layout_tabs->count()-1; i>=0; --i)
{
window = layout_tabs->widget(i); // remember widget
layout_tabs->removeTab(i); // remove tab
free(window); // remove widget
}
free(layout_tabs); // remove qtabwidget
layout_tabs=nullptr;
}
Функция filltabs() используется несколько раз. Старый tabwidget уничтожен и создается новое. Не имеет значения, если я не удаляю tabwidget, но удаляю только вкладки. Программа по-прежнему выходит с кодом возврата 0.
Спасибо за ваш ответ. Возможно, я забыл упомянуть, что основные окна не закрываются. Закладка - отдельное окно для отображения результатов расчета. Когда я заканчиваю свою программу, закрывая главное окно, программа «сбой с кодом возврата 0», как говорит kdevelop. Так что это не совсем «нормальный конец», как говорит kdevelop. –
начался с командной строки, он говорит: ошибка сегментации –
ok Я решил проблему. Я должен использовать layout_tabs = new QTabWidget (0) (не QTabWidget()!) В конструкторе, а не удалять tabwidget больше, удалять только вкладки. –