QT中如何删除QtableView控件绑定的QStandardItemModel删除头列之外的所有数据,请给我完整代码
时间: 2024-02-06 22:11:53 浏览: 87
Qt QTableView插入控件,qss设计
下面是一个例子,可以删除QTableView控件绑定的QStandardItemModel中头列之外的所有数据:
```cpp
#include <QStandardItemModel>
#include <QTableView>
void deleteAllRowsExceptHeader(QStandardItemModel *model) {
int rowCount = model->rowCount();
int columnCount = model->columnCount();
// 删除所有行
for (int i = rowCount - 1; i >= 0; i--) {
model->removeRow(i);
}
// 重新添加表头
QStringList headerLabels;
for (int j = 0; j < columnCount; j++) {
headerLabels << model->headerData(j, Qt::Horizontal).toString();
}
model->clear();
model->setHorizontalHeaderLabels(headerLabels);
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QStandardItemModel model;
model.setColumnCount(3);
model.setHeaderData(0, Qt::Horizontal, "Name");
model.setHeaderData(1, Qt::Horizontal, "Age");
model.setHeaderData(2, Qt::Horizontal, "Gender");
// 添加数据
for (int i = 0; i < 10; i++) {
QList<QStandardItem *> rowItems;
rowItems << new QStandardItem(QString("Name %1").arg(i));
rowItems << new QStandardItem(QString::number(20 + i));
rowItems << new QStandardItem(QString(i % 2 == 0 ? "Male" : "Female"));
model.appendRow(rowItems);
}
// 创建一个QTableView控件,绑定QStandardItemModel模型
QTableView tableView;
tableView.setModel(&model);
tableView.show();
// 删除所有行,除了表头
deleteAllRowsExceptHeader(&model);
return app.exec();
}
```
在这个例子中,我们创建了一个QStandardItemModel模型,并将其绑定到一个QTableView控件上。然后添加了一些数据,以便进行演示。
`deleteAllRowsExceptHeader()`函数是用于删除除了表头之外的所有行的函数。它首先获取模型的行数和列数,然后使用`removeRow()`函数删除所有行。最后,它重新添加了表头。
在主函数中,我们创建了一个QTableView控件,并将其绑定到我们创建的QStandardItemModel模型。然后,我们调用`deleteAllRowsExceptHeader()`函数来删除所有行,但是保留表头。
运行这个例子,你可以看到QTableView控件中的所有行都被删除了,但是表头仍然存在。
阅读全文