Не добавлять в файл строку из наименования столбцов

На форму вывожу tableView в котором отображаю свою таблицу из базы данных, реализованы всяческие фильтры и сортировки. Определена функция для сохранения информации в файл, которая в данный момент отображена в tableView:

    void MainWindow::saveAsCSV_Add(QString filename_add)
    {
        QFile f(filename_add);
        if(f.open(QIODevice::WriteOnly|QIODevice::Append))
        {
            QTextStream ts(&f);
            QStringList strList;
            ts << strList.join(";")+"\n";
            for(int r = 0; r < ui->tableView->verticalHeader()->count(); ++r)
            {
                strList.clear();
                for(int c = 0; c < ui->tableView->horizontalHeader()->count(); ++c)
                {
                    strList << ui->tableView->model()->data(ui->tableView->model()->index(r, c), 
Qt::DisplayRole).toString();
                }
                ts << strList.join(";")+"\n";
            }
            f.close();
        }
    }

Далее я с помощью кнопки добавляю путь к файлу в le_name_file

void MainWindow::on_pb_name_file_clicked()
{
    QString path = QFileDialog::getOpenFileName(this, tr("Open File"), "/home", tr(""));
    ui->le_name_file->setText(path);
}

И с помощью другой кнопки добавляю в файл новую информацию не перезаписывая его.

void MainWindow::on_action_add_file_info_triggered()
{
    QString filename_add = ui->le_name_file->text();
    saveAsCSV_Add(filename_add);
}

И проблема в том, что каждый раз когда я заношу информацию в файл, то у меня заноситься строка с наименованием столбцов. Подскажите, пожалуйста, как исправить это? Спасибо.


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

Автор решения: Alex Rebell

Решил данный вопрос с помощью условия if (f.size() == 0), если файл пустой, то добавить информацию и заголовок столбцов (первой строкой в файле), если не пустой, то не добавлять строку с заголовками столбцов, а добавлять просто информацию из tableView.

void MainWindow::saveAsCSV_Add(QString filename_add)
{
    QFile f(filename_add);
    if(f.open(QIODevice::WriteOnly|QIODevice::Append))
    {
        QTextStream ts(&f);
        QStringList strList;
        if (f.size() == 0)
        {
            ts << strList.join(";")+"\n";
        }
        for(int r = 0; r < ui->tableView->verticalHeader()->count(); ++r)
        {
            strList.clear();
            for(int c = 0; c < ui->tableView->horizontalHeader()->count(); ++c)
            {
                strList << ui->tableView->model()->data(ui->tableView->model()->index(r, c),
                                                        Qt::DisplayRole).toString();
            }
            ts << strList.join(";")+"\n";
        }
        f.close();
    }
}
→ Ссылка