小编sus*_*iss的帖子

如何标记要隐藏在 QAbstractItemModel 派生模型中的行

我正在实现一个基于 Qt 的树视图,其中视图是基于 QTreeView 的类,模型是基于 QAbstractItemModel 的类。这棵树应该有数百万个节点。我正在实现一种过滤机制,其中过滤掉的节点只是隐藏在树视图中。(我不想用QSortFilterProxyModel

模型的内部数据结构看起来有点像这样。

class MyTreeItem
{
 ...
 private:
      QList<MyTreeItem *> _children;
      bool                _isHidden;
 };

 class MyTreeModel : public QAbstractItemModel 
 {
  ...
  private:
       MyTreeItem * _rootNode;
  };
Run Code Online (Sandbox Code Playgroud)

我可以确定在填充模型数据结构时是否应过滤特定节点 (MyTreeItem*)。所以我想让 QTreeView 知道这个 item 应该在填充数据结构时隐藏,而不是再次遍历整个树并在填充后隐藏行。

老实说,我处于设计阶段,所以我没有任何真正的代码。我的要求是,在填充数据结构时,我将确定是否应该过滤当前节点,如果是,将设置标志_isHidden。但我不确定如何通过调用QTreeView::setRowHidden()或其他方式让视图知道何时隐藏该行。

请分享您对执行此操作的最佳方式的想法。谢谢。

qt qtreeview qabstractitemmodel model-view

5
推荐指数
1
解决办法
3611
查看次数

标签 统计

model-view ×1

qabstractitemmodel ×1

qt ×1

qtreeview ×1