QTableView игнорирует первый столбец и строку из модели представления

дела обстоят так - в функцию TableViewModel::populate подаётся массив новых значений QVector<QVector<CellData>> newValues для записи в QVector<QVector<CellData*>*>* TableViewModel::values, из которых модель представления будет вытягивать информацию и отображать в QTableView. Проблема заключается в том, что в QTableView не отображается первая строка и первый столбец, отсчет headerData тоже начинается не с первого, а со второго элемента по строке и столбцу. Важно заметить, что при вызове beginInsertRows(QModelIndex(), -1, idx) вместо beginInsertRows(QModelIndex(), 0, idx) вылезает debug error (что неудивительно, ведь нельзя начинать вставлять ряды с минус первого), но - о чудо! Таблица отображается без всяких проблем с потерянными в случае с beginInsertRows(QModelIndex(), 0, idx) первым рядом и столбцом. Я несколько раз менял структуру данных модели, но такая ошибка у меня впервые, до этого всё работало с beginInsertRows(QModelIndex(), 0, idx), с чем это может быть связано? Прилагаю код TableViewModel::populate.

void TableViewModel::populate(QVector<QVector<CellData>> newValues)
{
    QVector<QVector<CellData*>*> temp_values;

    for (int i = 0; i < newValues.count(); i++)
    {
        auto qstrvec = new QVector<CellData*>[newValues.count()];
        for (int j = 0; j < newValues.at(0).count(); j++) 
        {
            CellData old_cell = newValues[i][j];
            CellData* cell = new CellData(old_cell.getCellSpan());
            cell->setFormula(old_cell.getFormula());
            cell->setTextColor(old_cell.getTextColor());
            cell->setBackgroundColor(old_cell.getBackgroundColor());
            cell->setValue(old_cell.getValue());
            (*qstrvec).push_back(cell); 
        }
        temp_values.push_back(qstrvec);
    }
    auto rows = (*this->values).count();
    auto columns = (*(*this->values)[0]).count();
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
        {
            delete (*(*this->values)[i])[j];
        }
        delete[](*this->values)[i];
    }

    int idx = temp_values.count();
    this->beginInsertRows(QModelIndex(), 0, idx);
    *this->values = temp_values;
    this->endInsertRows();
 }

Ответы (1 шт):

Автор решения: resusfactor_228

Ответ был действительно в непоказанном коде. В MainWindow удалял предыдущую модель и не делал после этого tableView->setModel(nullptr), что и вызывало такое странное поведение.

→ Ссылка