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;
}