почему последняя строка QTableWidget нулевая?

Всех приветствую. Прошу помочь разобраться. В QTableWidget последняя строка добавленная, всегда состоит из нулевых QTableWidgetItem. Но если в update_total в цикле поменять на row<sections[i]->table->rowCount()-1 и добавлять потом строки, то update_total работает нормально и суммирует все значения четвертого столбца всех строк, кроме последней. почему так? как исправить?

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow){
    QTableWidget *table = new QTableWidget(1,5,this);
    table->setItem(0,0, new QTableWidgetItem(QString("артикул")));
    table->setItem(0,1, new QTableWidgetItem(QString("наименование")));
    table->setItem(0,2, new QTableWidgetItem(QString("кол-во")));
    table->setItem(0,3, new QTableWidgetItem(QString("цена")));
    table->setItem(0,4, new QTableWidgetItem(QString("сумма")));
}
void MainWindow::update_total()
{
    float total_sum=0;
    for(int i=0; i<sections.size(); i++){ //sections это QList<Section*> там хранятся указатели на все таблицы. для теста там 1 таблица всегда
        for(int row=0; row<sections[i]->table->rowCount()-1; row++){
            total_sum+=sections[i]->table->item(row,4)->text().toFloat(); //вся последняя строка добавленных итемов всегда нулевая, почему?
        }
    }
}
void MainWindow::on_button_AddSection_clicked()
{
//тут код по созданию новой Section с таблицей QTableWidget
    QObject::connect(sections.last()->table,&QTableWidget::cellChanged, sections.last(), &ui::Section::updateRowSum);
    QObject::connect(sections.last()->table,&QTableWidget::cellChanged, this, &MainWindow::update_total
}

Section.cpp - функция добавления строки в конец таблицы.

void Section::AddArt(QString art)
    {
        disconnect(table,&QTableWidget::cellChanged, this, &ui::Section::updateRowSum);

        table->insertRow(table->rowCount());      
        QTableWidgetItem *artikul = new QTableWidgetItem(art);
        artikul->setFlags(artikul->flags() ^ Qt::ItemIsEditable);
        table->setItem(table->rowCount()-1, 0, artikul);
        
        QTableWidgetItem *name = new QTableWidgetItem(g->name);
        name->setFlags(name->flags() ^ Qt::ItemIsEditable);
        table->setItem(table->rowCount()-1, 1, name);

        table->setItem(table->rowCount()-1, 2, new QTableWidgetItem("1"));

        QTableWidgetItem *price = new QTableWidgetItem(g->price);
        price->setFlags(price->flags() ^ Qt::ItemIsEditable);

        table->setItem(table->rowCount()-1, 3, price);

        QTableWidgetItem *sum = new QTableWidgetItem(g->price);
        sum->setFlags(sum->flags() ^ Qt::ItemIsEditable);
        table->setItem(table->rowCount()-1, 4, sum);

        connect(table, &QTableWidget::cellChanged, this, &Section::updateRowSum);
    }

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