QT中QMainWindow从源QListView的模型中移除选定的项目
时间: 2024-12-08 20:20:50 浏览: 9
在Qt中,如果你有一个`QMainWindow`实例,并在其内部使用了一个`QListView`来展示数据,你可以通过以下步骤从模型中移除选定的项目:
1. 首先,你需要确保`QListView`已经连接到一个`QAbstractItemModel`(比如`QStandardItemModel`),这是它的数据源。
2. 当用户选择一个项目时,可以在`QListView`的`currentChanged`信号连接的槽函数中处理。例如,可以使用以下代码获取当前选中的项:
```cpp
QObject::connect(yourListView, &QListView::currentItemChanged,
this, [model](const QModelIndex& current, const QModelIndex& previous) {
if (current.isValid()) {
QModelIndex itemIndex = current;
// 保存选中的item到变量里
QStandardItem* selectedItem = static_cast<QStandardItem*>(model->itemFromIndex(itemIndex));
// 移除该项
model->removeRow(itemIndex.row(), parentIndex); // parentIndex应为item所在的行的父节点
}
});
```
3. `removeRow()`方法会从模型中移除指定行的项。记得传递正确的parentIndex,通常是项目的父节点索引。
4. 为了确保视图更新,需要调用`model->invalidate()`或`yourListView->update()`来通知视图。
阅读全文