QTreeWidget搜索并隐藏不匹配的项

本文介绍了如何在QTreeWidget中实现数据筛选,通过设置row隐藏功能,只显示匹配搜索条件的项,其他不匹配的项则被隐藏。关键在于使用setRowHidden方法配合indexFromItem方法,后者需要自定义QTreeWidget类并将其设为public。通过这些技术,可以在QTreeWidget中实现高效的数据筛选和显示效果。

QTreeWidget可以呈现出数据的层次关系,有时需要对数据进行筛选,只显示结果项,其他项隐藏。如下图所示

搜索框未输入
搜索数据,只显示匹配项
通过查询QTreeWidget的方法可以看到有个setRowHidden方法可以隐藏行,Qt assistant中说明如下:

void QTreeView::setRowHidden(int row, const QModelIndex &parent, bool hide)
If hide is true the row with the given parent is hidden, otherwise the row is shown.

注意这是隐藏parent节点下面第row项。现在问题转化为获取需隐藏项的parent的QmodelIndex和该项在parent中的row,再次查找方法可以发现有个indexFromItem方法,Qt assistant中说明如下:

[protected] QModelIndex QTreeWidget::indexFromItem(const QTreeWidgetItem *item, int column = 0) const
Returns the QModelIndex associated with the given item in the given column.

这是个protected方法,QTreeWidget对象无法直接调用,我们必须自定义TreeWidget类继承QTreeWidget类,然后覆写indexFromItem方法成public的,在自定义TreeWidget类中直接返回QTreeWidget:

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值