QT中QStandardItemModel对象中的数据有时第1行的数据会到第4或者第6行下面显示, 如何对QStandardItemModel对象中的数据按照行数重新排序显示,请给我完整代码
时间: 2024-02-22 10:57:39 浏览: 28
你可以使用QStandardItem对QStandardItemModel中的数据进行排序,具体的代码实现如下:
```cpp
QStandardItemModel* model = new QStandardItemModel(); // 创建QStandardItemModel对象
int rowCount = 10; // 行数
int colCount = 2; // 列数
for (int row = 0; row < rowCount; row++) {
QList<QStandardItem*> items; // 创建QStandardItem对象列表
// 设置第一列数据
QStandardItem* item1 = new QStandardItem(QString::number(row));
items.append(item1);
// 设置第二列数据
QStandardItem* item2 = new QStandardItem(QString::number(row + 1));
items.append(item2);
model->appendRow(items); // 将一行数据添加到模型中
}
// 设置表头
model->setHeaderData(0, Qt::Horizontal, "列1");
model->setHeaderData(1, Qt::Horizontal, "列2");
// 对数据按行数重新排序
for (int row = 0; row < rowCount; row++) {
for (int i = 0; i < model->rowCount(); i++) {
if (model->index(i, 0).data().toInt() == row) {
QList<QStandardItem*> items;
items.append(model->takeRow(i));
model->insertRow(row, items);
break;
}
}
}
```
在上述代码中,我们先创建了一个QStandardItemModel对象,并且使用循环递增的方式设置了模型中的数据。接着,我们对数据按照行数重新排序,具体的方法是循环模型中的数据,找到行数与当前循环行数相同的数据,然后将该行数据拿出来,插入到当前循环行数的位置。最后,我们就可以得到按照行数重新排序的QStandardItemModel对象了。