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

时间:2015-09-21 14:17:36

标签: c++ qt model

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

1 个答案:

答案 0 :(得分:4)

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

您可以查看qt来源:

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