1. 程式人生 > >Qt qtablewidget 實現篩選功能,顯示符合條件的整行資訊

Qt qtablewidget 實現篩選功能,顯示符合條件的整行資訊

問題:

     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型別