QListView的默认选择模型的所有权

Ownership of default selection model of QListView

本文关键字:所有权 模型 默认 QListView 选择      更新时间:2023-10-16

文档声明setModel将创建并设置一个新的选择模型,替换之前用setSelectionModel()设置的任何模型。但是,旧的选择模型不会被删除,因为它可以在多个视图之间共享。他们建议删除旧的选择模型,如果它不再需要。这也适用于默认选择模型吗?

不需要,您不需要手动删除默认选择模型。默认选择模型是由视图创建的,它使用视图作为父视图。因此,它将根据对象所有权被删除(如果您不更改选择模型的父级,则会自动删除)。

您可以查看qt源代码:

void QAbstractItemView::setModel(QAbstractItemModel *model)
{
    //...
    QItemSelectionModel *selection_model = new QItemSelectionModel(d->model, this);
}