Всем доброго времени суток!
Столкнулся с непонятной утечкой памяти при удалении\добавлении строк в таблицу QTableWidget.
Имеется: указатель на объект, типа QTableWidget (с именем tableWidget_SM), в него добавляются элементы, типа QTableWidgetItem (у меня простая таблица, состоящая из N строк и 1 столбца). Как только кол-во элементов(строк) в таблице становится равным определенной величине, происходит удаление первой строки и уменьшение общего кол-ва строк на 1. Код ниже:
C++ (Qt)
void CMyDlg::AddMessage( const QString &text )
{
static QFont fontMessage = QFont( "Tahoma", 8 );
tableWidget_SM->setUpdatesEnabled( false );
const QString szText = QString("> %1").arg(text);
const int i = tableWidget_SM->rowCount();
if( i == 2000 )
{
QTableWidgetItem *pDelitem = tableWidget_SM->takeItem( 0, 0 );
delete pDelitem;
tableWidget_SM->removeRow( 0 );
tableWidget_SM->setRowCount( 1999 );
}
tableWidget_SM->insertRow( i );
QTableWidgetItem* pColumn = new QTableWidgetItem();
pColumn->setFont( fontMessage );
pColumn->setText( szText );
tableWidget_SM->setItem( i, 0, pColumn );
tableWidget_SM->setUpdatesEnabled( true );
}
По идее все должно быть нормально и утечки памяти быть не должно(я же удаляю каждый раз объект QTableWidgetItem), однако на практике программа активно жрёт ресурсы (сообщения AddMessage() у меня могут приходить часто ~1000 раз в секунду).
Что в моем коде не верно? Подскажите, плизз…