Qt qtablewidget 实现筛选功能,显示符合条件的整行信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24890953/article/details/61044572

问题:

     1、有输入的时候显示符合条件的整行信息

     2、没有输入的时候显示所有信息

过程:

     查询到官方提供了QTableWidget类的

          QList<QTableWidgetItem*> QTableWidget::findItems(constQString&text,Qt::MatchFlagsflags) const

               

          voidQTableView::setRowHidden(introw,bool hide)

第一次思路:

     1、通过findItems输出符合条件的行号

     2、将符合条件行显示

第二次思路:

     1、判断输入是否为空?全部显示(结束):进一步判断  

     2、获取符合条件的行号

     3、隐藏所有行

     4、判断行号是否为空?(结束操作):显示相关行(结束)

void MainWindow::ScreenInfo(QTableWidget *source, QString &text)
{  
    int rC = source->rowCount();//获得行号
    if ("" == text)//判断输入是否为空
    {
        for (int i = 0; i < rC; i++)
        {
            source->setRowHidden(i, false);//显示所有行
        }
    }
    else
    {
        //获取符合条件的cell索引
        QList <QTableWidgetItem *> item = source->findItems(text, Qt::MatchContains);
        
        for (int i = 0; i < rC; i++)
        {
            source->setRowHidden(i, true);//隐藏所有行
        }
        
        if (!item.isEmpty())//不为空
        {
            for (int i = 0; i < item.count(); i++)
            {
                source->setRowHidden(item.at(i)->row(),false);//item.at(i).row()输出行号
            }
        }
    }
}

附match类型

猜你喜欢

转载自blog.csdn.net/qq_24890953/article/details/61044572
今日推荐