qstandaritemmodel导出某列数据为QStringList,最简洁的实现
时间: 2024-05-06 15:15:58 浏览: 65
以下是一个简洁的实现,假设要导出第一列数据:
```cpp
QStandardItemModel model;
// 填充 model 数据
QStringList list;
for (int row = 0; row < model.rowCount(); ++row) {
QStandardItem* item = model.item(row, 0); // 获取第一列数据
if (item) {
QString data = item->data(Qt::DisplayRole).toString(); // 获取单元格数据
list.append(data);
}
}
```
这里使用了 `QStandardItemModel` 提供的 `item()` 函数获取指定行列的单元格,然后通过 `data()` 函数获取单元格数据,并添加到 `QStringList`。
相关问题
qstandaritemmodel导出某列数据为QStringList
可以使用`QStringList`和`QStandardItemModel`的方法来实现。
首先,使用`QStandardItemModel`创建一个表格模型,并将数据添加到其中:
```cpp
QStandardItemModel* model = new QStandardItemModel(this);
// 添加表头
model->setHorizontalHeaderLabels(QStringList() << "姓名" << "年龄" << "性别");
// 添加数据
QList<QStandardItem*> row1;
row1 << new QStandardItem("张三") << new QStandardItem("20") << new QStandardItem("男");
model->appendRow(row1);
QList<QStandardItem*> row2;
row2 << new QStandardItem("李四") << new QStandardItem("25") << new QStandardItem("女");
model->appendRow(row2);
```
然后,可以通过遍历表格模型的行来获取指定列的数据,并将其存储到`QStringList`中:
```cpp
QStringList dataList;
int column = 1; // 指定要导出的列
for (int row = 0; row < model->rowCount(); ++row) {
QStandardItem* item = model->item(row, column);
dataList << item->text();
}
```
这样,`dataList`中就存储了指定列的所有数据,可以根据需要将其导出。
QStandardItemModel获取某列所有item的内容为一个QStringList
可以通过以下代码获取QStandardItemModel中某一列的所有item内容,存储在QStringList中:
```c++
QStringList columnItems;
int column = 0; // 指定列号
for (int row = 0; row < model->rowCount(); ++row) {
QModelIndex index = model->index(row, column);
if (index.isValid()) {
QString itemText = index.data(Qt::DisplayRole).toString();
columnItems.append(itemText);
}
}
```
其中,`model`是QStandardItemModel对象,`column`是需要获取的列号。通过循环遍历QStandardItemModel中的每一行,获取指定列的QModelIndex对象,并通过`index.data(Qt::DisplayRole)`方法获取到该item的内容。最后将所有item的内容存储在QStringList中。