Qt:从视图中删除模型

Qt: remove model from view

我们在Qt中通常这样设置视图的模型: view->setModel(model);

但是有什么方法可以从视图中删除模型吗?我的意思是将视图留空,就像它刚刚创建并且尚未为其设置任何模型一样。

如果你问我想要的 原因,我的情况与这个人的 post 非常相似。当第一个视图没有选择或者它是 empty/invalid/whatever 时,我想让第二个视图完全不显示任何内容:没有 headers、列、垃圾数据。在这种情况下,从视图中删除模型似乎是非常合理的。

我试过一个肮脏的技巧: *view = QTableView(); 但是 Qt 关心这些邪恶的事情并将 operator= 设为私有。

来源QAbstractItemView::setModel()

d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel());

看起来如果你传递一个空指针,它会在内部使用一些虚拟模型回退。因此支持空指针,这是转到 "unset" 当前模型的有效方法。