Доброго времени суток!
Столкнулся со странным (для меня) поведением QTableWidget/QTableWidgetItem. Есть такой код:
int iRow;
QTableWidgetItem *item;
for (int i = 0; i < sPortsList.size(); i++)
{
item = new QTableWidgetItem(sPortsList[i].split(";").at(1));
if (sPortsList[i].split(";").at(0).toInt() == 1)
item->setBackgroundColor(Qt::green);
else
item->setBackgroundColor(Qt::red);
iRow = ui.tableWidgetPortsList->rowCount();
ui.tableWidgetPortsList->insertRow(iRow);
ui.tableWidgetPortsList->setItem(iRow, 0, item);
}
, где sPortsList - QStringList.
При пошаговой отладке видно, как создается новый QTableWidgetItem в строке
item = new QTableWidgetItem(sPortsList[i].split(";").at(1));
с нужным текстовым значением.
Далее видно, что ему присваивается текст фоновой заливки в строках
if (sPortsList[i].split(";").at(0).toInt() == 1)
item->setBackgroundColor(Qt::green);
else
item->setBackgroundColor(Qt::red);
Но если попытаться вызвать метод
ui.tableWidgetPortsList->item(0, 0)->text();
внутри цикла сразу после вставки setItem, вылетает ошибка SIGSEGV
Соответственно на форме, где расположен данный QTableWidget отображаются просто пустые строки.
Как так происходит?
Вызов приведенного кода идет в конструкторе формы, где расположен данный QTableWidget.
Qt 4.8.3 если это имеет значение.
Заранее спасибо!