Имею класс, в котором создается виджет таблицы QTableWidget, указатель на который хранится в свойстве table:
table=new QTableWidget(0, colsName.count(), this);
table->setHorizontalHeaderLabels(colsName);
В процессе работы класса в таблицу добавляются строки. Ячейки строк заполняются QTableWidgetItem * или виджетами, вставляемыми через QTableWidget::setCellWidget();
В деструкторе необходимо пробежать всю таблицу и удалить итемы и вставленные виджеты.
Я это делаю так:
Downloader::~Downloader()
{
// Удаляется содержимое таблицы
for(int i=0; i<table->rowCount(); i++) // <-- Тут сегфолт!
{
delete table->item(i, downloadReferenceCol);
delete qobject_cast<QProgressBar *>( table->cellWidget(i, downloadReferenceCol) );
}
delete table;
delete cancelButton;
}
Но получаю сегфолт на строке с циклом при выполнении самой первой итерации.
Скриншот:
http://i.piccy.info/i9/053bea8edbb2549fea811c231e4af339/1452982758/389884/825...
Видно, что table существует, и содержит какой-то адрес. Но выражение table->rowCount() почему-то не высчитывается. И получается сегфолт.
Вопрос: из-за чего появляется такой сегфолт?