QTreeWidget findItems 或按图标过滤
QTreeWidget findItems or filter by icon
我正在使用带有图标和字符串数据的 QTreeWidget。
现在我正在使用自己的过滤函数通过 QTreeWidget::findItems 函数过滤掉字符串,效果很好。
但是,我怎样才能 filter/findItems 按图标?
Qt findItems 函数只能获取字符串作为输入...
有什么建议吗?
试试这个:
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;
}
我正在使用带有图标和字符串数据的 QTreeWidget。
现在我正在使用自己的过滤函数通过 QTreeWidget::findItems 函数过滤掉字符串,效果很好。
但是,我怎样才能 filter/findItems 按图标?
Qt findItems 函数只能获取字符串作为输入...
有什么建议吗?
试试这个:
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;
}