【问题标题】:QTreeWidget findItems or filter by iconQTreeWidget findItems 或按图标过滤
【发布时间】:2015-05-26 07:42:13
【问题描述】:

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

现在我正在使用我自己的过滤器函数通过QTreeWidget::findItems 函数过滤掉字符串,效果很好。

但是,我如何通过图标过滤/查找项目?

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

有什么建议吗?

【问题讨论】:

    标签: qt filter qtreewidget


    【解决方案1】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2021-04-12
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多