QTreeWidget findItems或按图标过滤

时间:2015-05-26 07:42:13

标签: qt filter qtreewidget

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

现在我使用自己的过滤功能通过QTreeWidget::findItems功能过滤掉字符串,效果非常好。

但是,如何通过图标过滤/ findItems?

Qt findItems函数只能输入字符串作为输入...

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

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