「Qtの基礎 - CSVファイル」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == CSVファイル == 以下の例では、CSVファイルを作成している。<br> 処理手順は以下の通りである。<br> # 数値データを生成する。<br>ここでは、sin曲線y=sin(x)を生成する。 # 数値データをテキストデータに変換する。 # ファイル保存ダイアログを開いて、保存するファイル名を入力する。 # 全テキストデータを書き込む。 <br> <syntaxhighlight…」)
 
4行目: 4行目:
== CSVファイル ==
== CSVファイル ==
以下の例では、CSVファイルを作成している。<br>
以下の例では、CSVファイルを作成している。<br>
処理手順は以下の通りである。<br>
<br>
# 数値データを生成する。<br>ここでは、sin曲線y=sin(x)を生成する。
処理の流れを以下に示す。<br>
# 数値データを生成する。<br>ここでは、sin曲線である <math>y = \sin(x)</math> を生成する。
# 数値データをテキストデータに変換する。
# 数値データをテキストデータに変換する。
# ファイル保存ダイアログを開いて、保存するファイル名を入力する。
# ファイル保存ダイアログを開いて、保存するファイル名を入力する。

2024年9月7日 (土) 07:23時点における版

概要



CSVファイル

以下の例では、CSVファイルを作成している。

処理の流れを以下に示す。

  1. 数値データを生成する。
    ここでは、sin曲線である を生成する。
  2. 数値データをテキストデータに変換する。
  3. ファイル保存ダイアログを開いて、保存するファイル名を入力する。
  4. 全テキストデータを書き込む。


 #include <QFileDialog>
 #include <QMessageBox>
 #include <QTextStream>
 #include <QFile>
 #include <vector>
 #include <math.h>
 #include <sstream>
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 
 using namespace std;
 
 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
 {
    ui->setupUi(this);
 }
 
 MainWindow::~MainWindow()
 {
    delete ui;
 }
 
 void MainWindow::OnButtonClicked()
 {
    // Input File Name
    QString FileName = QFileDialog::getSaveFileName(this, tr("Save CSV File"), "", tr("CSV (*.csv);;All Files (*)"));
 
    if(FileName.isEmpty())
    {  // Cancel
       return;
    }
 
    // Generate CSV Data
    int iSize = 100;
    vector<double> lx(iSize, 0.0f),
                   ly(iSize, 0.0f);
 
    double dx = 2 * 3.15159 / iSize;
    for(int i = 0; i < iSize; i++)
    {
       lx[i] = i * dx;
       ly[i] = sin(vx);
    }
 
    // Convert from Double to String
    QString strFileData = "";
    //stringstream ss;
    for(int i = 0; i < iSize; i++)
    {
        strFileData += lx[i] + ", " + ly[i] + "\n";
        //ss << lx[i] << "," << ly[i] << endl;
    }
    
    // Write to File
    QFile File(FileName);

    if(!File.open(QIODevice::WriteOnly))
    { 
        QMessageBox::information(this, tr("Unable to open file"), File.errorString());
 
        return;
    }
 
    QTextStream OutStream(&File);
    // 浮動小数点をe形式にする
    //OutStream.setRealNumberNotation(QTextStream::ScientificNotation);
 
    // 浮動小数点の桁数を固定
    //OutStream.setRealNumberNotation(QTextStream::FixedNotation);
 
    // 浮動小数点の桁数を設定
    OutStream.setRealNumberPrecision(3);
 
    OutStream << strFileData;
    //OutStream << ss.str().c_str();
 
    File.close();
 }