Как мне прочитать файл csv в Qt Desktop App (виджет) и отобразить в таблицу виджетов? - PullRequest
0 голосов
/ 29 ноября 2018

Я обычно читаю CSV-файл с <fstream> lib и сохраняю эту информацию в vector<MyStruct> lib, но в такого рода проекте мы должны использовать вызовы <QFile> и <QTextStream>, и я действительно не знаюкак это использовать, даже этот причудливый вектор QStringList - что головная боль -.

Я хочу сделать CSV-таблицу в таблицу виджетов и сохранить всю информацию в векторе.это структура

struct Person
    {
       QString name;
       int age;
       double salary;
    };

, и моя структура CSV выглядит так:

name,age,salary
name,age,salary
name,age,salary

это мой код до сих пор

persons[0].name = "Victor Ramos";
persons[0].age= 10;
persons[0].salary= 10000.0;
persons[1].name = "Ana Ramos";
persons[1].age= 15;
persons[1].salary= 12000.0;
int fila;
ui->tableWidget->insertRow(ui->tableWidget->rowCount());
fila = ui->tableWidget->rowCount() - 1;
ui->tableWidget->setItem(fila, NOMBRE, new QTableWidgetItem(nombre));
ui->tableWidget->setItem(fila, EDAD, new QTableWidgetItem(QString::number(edad)));
ui->tableWidget->setItem(fila, SALARIO, new QTableWidgetItem(QString::number(salario)));

Обычно я сделал бы это, еслиЯ работал с простым консольным приложением

#include <fstream>
#include <vector>
int main(){
    vector<Person> persons; Person p;
    istream file('myFile.csv');
    string line;
    if(!file.is_open()){ return 1; }else{
        while(!file.eof()){
            getLine(file, line, ',');
            p.name = line;
            getLine(file, line, ',';
            p.edad = stoi(line);
            getLine(file, line);
            //string to float recive a string a return a float
            p.salary = stringToFloat(line);
            persons.push_back(p);
        }
    }
    file.close();
    /*Show vector persons with a simple for*/
}

Спасибо.

...