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" 当前模型的有效方法。
我们在Qt中通常这样设置视图的模型:
view->setModel(model);
但是有什么方法可以从视图中删除模型吗?我的意思是将视图留空,就像它刚刚创建并且尚未为其设置任何模型一样。
如果你问我想要的 原因,我的情况与这个人的 post 非常相似。当第一个视图没有选择或者它是 empty/invalid/whatever 时,我想让第二个视图完全不显示任何内容:没有 headers、列、垃圾数据。在这种情况下,从视图中删除模型似乎是非常合理的。
我试过一个肮脏的技巧:
*view = QTableView();
但是 Qt 关心这些邪恶的事情并将 operator=
设为私有。
来源QAbstractItemView::setModel()
:
d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel());
看起来如果你传递一个空指针,它会在内部使用一些虚拟模型回退。因此支持空指针,这是转到 "unset" 当前模型的有效方法。