QTextStreamを用いることで、csvファイルに保存することが可能です。
csvファイル保存の形式に合わせるため、データごとにカンマで区切ります。今回は、10個のデータごとに改行します。
今回使用するデータは、日本語文字列データを使用しました。
以下がコードです。
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QString> #include <QDebug> #include <QFile> #include <QTextStream> #include <QFileDialog> #include <QMessageBox> #define Jstr(str) QString::fromLocal8Bit(str) MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { // csvファイルに書き込むQStringListを作成 QStringList writeList; QString str = Jstr("日本語"); for (int i = 1; i <= 100; i++) { if (i % 10){ writeList.append(str + " : " + QString::number(i) + ","); } else { // 改行コードはLFです writeList.append(str + " : " + QString::number(i) + "\n"); } } // fileNameとfile pathを求める QString fileName = QFileDialog::getSaveFileName(this, tr("Save Paint Info"), "", tr("Paint info (*.csv);;All Files (*)")); if (fileName.isEmpty()) return; QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) { QMessageBox::information(this, tr("Unable to open file"), file.errorString()); return; } // デバッグ表示 foreach (QString item, writeList) { qDebug() << item; } // csvファイルに書き込む QTextStream out(&file); foreach (QString item, writeList) { out << item; } }
実行結果
不明なコンパイル時の出力はありますが、無事、csvファイルにデータを書き込むことができました。