Невозможно добавить элементы в QTableWidget

У меня есть программа, которая запрашивает базу данных SQLite и отображает некоторую информацию из этой базы данных в виде таблицы. Я сделал это несколько раз в программе, и выбрал более двусмысленный способ сделать это, поэтому я написал новые функции, но это всегда бросает утверждение:

ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/qt/QtCore/qlist.h, line 462

Вот мой код:

void Sync::on_btnLoadTable_clicked()
{
if ( !m_district ) return;

ui->tblTableView->clear();
ui->tblTableView->setRowCount( 0 );
ui->tblTableView->setColumnCount( 0 );

ui->tblTableView->setSortingEnabled( false );

QStringList fields;
QList< QStringList > rows = m_district->getAllOf( ui->cboTables->currentText(), &fields );

int rowCount = rows.size();
if ( rowCount > 0 )
{
int columns = fields.size();
ui->tblTableView->setColumnCount( columns );
for(int c=0; c < columns; c++)
ui->tblTableView->setHorizontalHeaderItem( c, new QTableWidgetItem(fields[c]) );

ui->tblTableView->setRowCount( rowCount );
for(int r=0; r < rowCount; r++)
{
int cols = rows[r].size();
qDebug() << "Fields=" << columns << ", row columns=" << cols;
qDebug() << "Table is " << ui->tblTableView->columnCount() << "x" << ui->tblTableView->rowCount();
for(int c=0; c < columns; c++)
{
qDebug() << "row column count=" << rows[r].size();
qDebug() << "row=" << r << ",col=" << c;
QString data = rows[r][c];
qDebug() << "text=" << data;
QTableWidgetItem *item = new QTableWidgetItem( data );
ui->tblTableView->setItem( r, c, item );
qDebug() << "inserted [" << r << "," << c << "]";
}
}
qDebug() << "Finished";
}
ui->tblTableView->setSortingEnabled( true );

}

И это выводит следующее в qDebug:

Fields= 10 , row columns= 10
Table is  10 x 6381
row column count= 10
row= 0 ,col= 0
text= "137288735238a076b1ed644781a8cdf3f598067b41"ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/qt/QtCore/qlist.h, line 462

Я установил серию контрольных точек, и кажется, что ui->tblTableView->setItem( r, c, item ); строка, но столбец и количество строк, кажется, подразумевают эту строку r и колонка c оба допустимых места для размещения предмета.

Любые идеи, почему это будет давать мне это утверждение?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]