Не добавлять в файл строку из наименования столбцов
На форму вывожу 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 шт):
Решил данный вопрос с помощью условия 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();
}
}