如何使用QList<QStandardItem *>获取列中的所有项目?
How to get all items in a column using QList<QStandardItem *>?
我需要从CSV文件绘制图形。我为此使用了Qlist。我需要在特定列中获取所有项目,例如第4列中的项目。这是我解析CSV文件并写入表中的方法。我需要一种方法来获取行的每四个元素。
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++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 如何维护资源管理器项目视图中当前可见的项目列表
- EASTL矢量<向量<int>>连续的
- 错误-我无法在VS2019中打开新的Qt项目