QStandardItemModel::moveRow移动整行如何实现(在有多列数据情况下)
时间: 2024-05-03 22:22:53 浏览: 83
QStandardItemModel::moveRow可以用来移动整行,但是需要注意的是,它只能移动一列数据,如果需要同时移动多列数据,需要自己实现。
示例代码如下:
```cpp
void moveRow(QStandardItemModel* model, int sourceRow, int destRow)
{
// 获取源行的所有数据
QList<QStandardItem*> sourceItems;
for (int i = 0; i < model->columnCount(); i++) {
QStandardItem* item = model->item(sourceRow, i);
if (item) {
sourceItems.append(item->clone());
} else {
sourceItems.append(new QStandardItem(""));
}
}
// 删除源行
model->removeRow(sourceRow);
// 插入到目标行
for (int i = 0; i < sourceItems.count(); i++) {
model->setItem(destRow, i, sourceItems.at(i));
}
}
```
使用示例:
```cpp
QStandardItemModel* model = new QStandardItemModel();
// 初始化模型...
moveRow(model, 1, 3);
```
以上代码将会把第1行的数据移动到第3行。如果需要同时移动多列数据,只需要修改获取数据和设置数据的代码即可。
阅读全文