qt removeRows删除失败
时间: 2024-04-30 10:18:40 浏览: 187
QT Mysql数据库通过QSqlTableModel在TableView中显示,支持翻页等功能
5星 · 资源好评率100%
删除行的操作可以使用 `QAbstractItemModel::removeRows()` 函数。该函数的原型如下:
```
bool QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
```
其中,row 表示要删除的第一行的索引,count 表示要删除的行数,parent 表示要删除的父项。
在使用该函数时,请注意以下几点:
1. 该函数返回一个 bool 类型的值,表示删除是否成功。
2. 该函数只能删除一级子项,如果要删除多级子项,需要递归删除。
3. 删除行时需要调用 `beginRemoveRows()` 和 `endRemoveRows()` 函数,以便通知视图进行相应的更新。
下面是一个示例代码,演示如何使用 `removeRows()` 函数删除表格中的一行:
```
bool MyTableModel::removeRows(int row, int count, const QModelIndex &parent)
{
beginRemoveRows(parent, row, row+count-1);
for (int i = 0; i < count; i++) {
m_data.removeAt(row);
}
endRemoveRows();
return true;
}
```
在上面的代码中,`m_data` 是一个 QList<QVariantList> 类型的数据成员,表示表格中的所有数据。在删除行时,我们先调用 `beginRemoveRows()` 函数,然后遍历要删除的行,将其从 `m_data` 中删除。最后,我们再调用 `endRemoveRows()` 函数,以便通知视图进行更新。
阅读全文