【发布时间】:2015-05-26 07:42:13
【问题描述】:
我正在使用带有图标和字符串数据的 QTreeWidget。
现在我正在使用我自己的过滤器函数通过QTreeWidget::findItems 函数过滤掉字符串,效果很好。
但是,我如何通过图标过滤/查找项目?
Qt findItems 函数只能获取字符串作为输入...
有什么建议吗?
【问题讨论】:
标签: qt filter qtreewidget
我正在使用带有图标和字符串数据的 QTreeWidget。
现在我正在使用我自己的过滤器函数通过QTreeWidget::findItems 函数过滤掉字符串,效果很好。
但是,我如何通过图标过滤/查找项目?
Qt findItems 函数只能获取字符串作为输入...
有什么建议吗?
【问题讨论】:
标签: qt filter qtreewidget
试试这个:
QTreeWidgetItem* findByIcon( QTreeWidget* aTreeWidget, const QIcon& aIcon, const int aColumn = 0 )
{
QTreeWidgetItemIterator iterator( aTreeWidget );
while ( *iterator )
{
if ( (*iterator)->data( aColumn, Qt::DecorationRole ) == aIcon )
{
return (*iterator);
}
++iterator;
}
return nullptr;
}
这只会找到第一个匹配,够了吗?
如果没有,那么这里有一个函数可以找到所有带有给定图标的项目:
QList< QTreeWidgetItem* > findByIcon( QTreeWidget* aTreeWidget, const QIcon& aIcon, const int aColumn = 0 )
{
QList< QTreeWidgetItem* > items;
QTreeWidgetItemIterator iterator( aTreeWidget );
while ( *iterator )
{
if ( (*iterator)->data( aColumn, Qt::DecorationRole ) == aIcon )
{
items << (*iterator);
}
++iterator;
}
return items;
}
【讨论】: