gpt4 book ai didi

c++ - 如何使用 QList 获取列中的所有项目?

转载 作者:行者123 更新时间:2023-11-30 03:15:37 28 4
gpt4 key购买 nike

我需要从 csv 文件中绘制图表。我为此使用了 QList。我需要获取特定列中的所有项目,例如第 4 列中的项目。这是我解析 csv 文件并写入表的方法。我需要一种方法来获取一行中的每 4 个元素。

        csvModel = new QStandardItemModel(this);
csvModel->setColumnCount(17);
csvModel->setHorizontalHeaderLabels(QStringList() << "TEAM ID" << "MISSION TIME" << "PACKET COUNT" << "ALTITUDE" <<"PRESSURE" <<"TEMPERATURE" <<"VOLTAGE" <<"GPS TIME" <<"GPS LATITUDE" <<"GPS LONGITUDE" <<"GPS ALTITUDE" <<"GPS SATS" <<"PITCH" <<"ROLL" <<"BLADE SPIN RATE" <<"SOFTWARE STATE" <<"BONUS DIRECTION");
ui->csvTableView->setModel(csvModel);

// Open the file from the resources. Instead of the file
// Need to specify the path to your desired file
QFile file("C:/Users/HP/Desktop/test.csv");

if ( !file.open(QFile::ReadOnly | QFile::Text) ) {
qDebug() << "File not exists";
}

else {
// Create a thread to retrieve data from a file
QTextStream in(&file);
//Reads the data up to the end of file
while (!in.atEnd())
{

QString line = in.readLine();
// Adding to the model in line with the elements
QList<QStandardItem *> standardItemsList;
// consider that the line separated by semicolons into columns
for (QString item : line.split(",")) {
standardItemsList.append(new QStandardItem(item));
}
csvModel->insertRow(csvModel->rowCount(), standardItemsList);
}
file.close();
}

最佳答案

你应该能够像这样得到它们。

QList<QStandardItem*> column;
for (auto row = 0; row < csvModel->rowCount(); row++) {
column << csvModel->data(csvModel->index(row, 3)).value<QStandardItem*>();
}

否则,如果您想从模型中完全删除该列并获得所有这些项目,您可以使用 QStandardItemModel::takeColumn ,请记住在调用此函数后您必须管理这些指针,因为 QStandardItemModel 释放所有权。

然后,如果您想访问每个元素数据,您可以这样做。

for (int i=0; i<column.size (); i++) {
series->append(i, column.at(i).data().toInt());
}

为了提高效率,您可以在一个循环中完成所有这些操作。

QList<int> series;
for (auto row = 0; row < csvModel->rowCount(); row++) {
auto item = csvModel->data(csvModel->index(row, 3)).value<QStandardItem*>();
series << item.data().toInt();
}

关于c++ - 如何使用 QList<QStandardItem *> 获取列中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56903798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com