Я пытаюсь реализовать свою собственную модель для QtTableWiew. Но я встал на проблему с вставкой столбца в мою модель. Вот код для моего собственного метода insertColumns:QtAbstractItemModel endInsertColumns() index out of range
bool DbTableModel::insertColumns(int column, int count, const QModelIndex &parent) {
Q_D(DbTableModel);
beginInsertColumns(parent,column,column+count);
d->table->insertColumn(column, "");
endInsertColumns();
return true;
}
Вот как insertColumns называется:
insertColumns(index,1);
Вот реализация insertColumn в d-> таблице:
void XMLTable::insertColumn(int index, QString name)
{
Q_D(XMLTable);
d->columns.insert(d->columns.begin() + index + 1,name);
for(int i = 0;i < d->data.count();i++)
{
if(index + 1 >= d->data[i].count())
{
d->data[i].append("");
}
else
{
d->data[i].insert(index + 1,"");
}
}
}
Код порождает ошибку на endInsertColumns() в insertColumns Метод метод:
ASSERT failure in QVector<T>::operator[]: "index out of range", file ..\..\..\Qt\5.4\mingw491_32\include\QtCore/qvector.h, line 396
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Мой вопрос: Почему endInsertColumns вызывает ошибку и как ее ремонтировать?
Спасибо за помощь
Что такое значение 'index' в' insertColumns (index, 1); '? – vahancho
Его индекс текущего столбца. В отладке это значение выглядит хорошо, и метод insertColumn в XMLTable работает без проблем. – Zlopez
Да, но какова его ценность? Вы должны понимать, что в какой-то момент значение индекса, которое вы используете, находится вне границы вашего вектора, и вам нужно знать, почему это происходит. Если он выглядит хорошо и работает без проблем, в чем ваш вопрос? – vahancho