QT 点击treeWidge 的item读取csv文件的地址读取文件内容到tablewidget

//获取treewidget第二列的内容(地址)来读取不同名称的csv文件
void StatisticsWidget::TreeWidgetLeftChecked(QTreeWidgetItem * widgetitem, int index)
{
QStringList filepath;
QTreeWidgetItem* curItem = ui.treeWidget->currentItem();
if (curItem != NULL)
{
filepath << curItem->text(1); //获取第二列的内容(地址)
QString strpath;
for (int i = (filepath.size() - 1); i >= 0; i–) //QStringlist类filepath反向存着初始item的路径
{ //将filepath反向输出,相应的加入’/‘
strpath += filepath.at(i);
}
qDebug() << strpath;
readExcel(strpath);
}
}
//读取csv文件到tablewidget
ui.tableWidget->setColumnCount(7);//设置表格的列数(我的是7个,如果你的还是跟行数一样不确定按照写行数的写)
void StatisticsWidget::readExcel(const QString &path)
{
QFile file(path);
file.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream in(&file);
QString line;
QStringList fields;
int row = 1;
while (!in.atEnd())
{
line = in.readLine();
linesStr.push_back(line);
fields = line.split(’,’);//按照","分割字符,因为csv文件是以逗号间隔数据的
for (int column = 0; column < fields.size(); column++)
{
ui.tableWidget->setRowCount(row);//设置行数(根据内容行数设计表格行数)
ui.tableWidget->setItem(row - 1, column, new QTableWidgetItem(fields[column]));//显示数据
}
row++;
}
}

Qt C++读取CSV文件内容,你可以使用QFile和QTextStream或者其他库如QCsvParser。以下是一个基本的示例,展示如何使用QFile和QTextStream来逐行读取CSV文件: ```cpp #include <QObject> #include <QFile> #include <QTextStream> class MyClass : public QObject { public: void readCSV(const QString& filePath) { QFile file(filePath); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Failed to open file: " + file.errorString(); return; } QTextStream in(&file); QStringList headers; // 用于存储列名 while (!in.atEnd()) { QString line = in.readLine(); if (line.startsWith("#")) { // 如果第一行不是数据,可能是头部信息,跳过 continue; } QStringList values = line.split(','); if (headers.isEmpty()) { headers = values; // 第一行作为列名 } else { // 现在处理数据行 QPair<QString, QVariant> data; for (int i = 0; i < headers.size(); ++i) { data.first = headers[i]; data.second = values.value(i); // 将值转换为合适的类型 // 这里可以根据需要进一步处理data.second emit dataRead(data); } } } file.close(); } signals: void dataRead(QPair<QString, QVariant>); }; ``` 在这个例子,`readCSV`函数打开CSV文件,然后使用`QTextStream`逐行读取。每行数据会被分割成字符串列表(values),然后遍历这个列表,并将列名和值打包到一个QPair,通过`dataRead`信号发送出去。 如果你正在寻找更复杂的功能,比如处理不同类型的数据或错误处理,可以考虑使用第三方库如QCsvParser,它专门用于解析CSV文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值