QTreeWidget findItems或按图标筛选

QTreeWidget findItems或按图标筛选,qt,filter,qtreewidget,Qt,Filter,Qtreewidget,我正在使用带有图标和字符串数据的QTreeWidget 现在我正在使用我自己的过滤函数通过函数过滤掉字符串,效果非常好 但是,如何通过图标过滤/查找数据项 Qt findItems函数只能获取字符串作为输入 有什么建议吗?试试这个: QTreeWidgetItem* findByIcon( QTreeWidget* aTreeWidget, const QIcon& aIcon, const int aColumn = 0 ) { QTreeWidgetItemIterator

我正在使用带有图标和字符串数据的QTreeWidget

现在我正在使用我自己的过滤函数通过函数过滤掉字符串,效果非常好

但是,如何通过图标过滤/查找数据项

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