2017-08-07 72 views
2

如何使用QT C++在QTableView中找出包含QString的單元格的索引(即行號和列號)?查找包含值的單元格的索引並突出顯示QTableView中的所有單元格

(在QTableView中的細胞P.S.:Without點擊)

+0

您的意思是搜索和查找表中的值? – aghilpro

+0

搜索後我想要表 – annie

+0

中的值的位置我更新我的答案。這行添加:'((QStandardItemModel *)modelIndex.model()) - > item(modelIndex.row(),index) - > setData(QBrush(Qt :: green),Qt :: BackgroundRole);' – aghilpro

回答

1

可以使用findItems()功能找到你的。

findItems()函數返回給定列中使用給定標誌匹配給定文本的項目列表。

for (int index = 0; index < model->columnCount(); index++) 
{ 
    QList<QStandardItem*> foundLst = model->findItems("YourText", Qt::MatchExactly, index); 
} 

如果你想找到的項目指標,並強調它使用此代碼:

for (int index = 0; index < model->columnCount(); index++) 
{ 
    QList<QStandardItem*> foundLst = model->findItems("YourText", Qt::MatchExactly, index); 
    int count = foundLst.count(); 
    if(count>0) 
    { 
      for(int k=0; k<count; k++) 
      { 
       QModelIndex modelIndex = model->indexFromItem(foundLst[k]); 
       qDebug()<< "column= " << index << "row=" << modelIndex.row(); 
       ((QStandardItemModel*)modelIndex.model())->item(modelIndex.row(),index)->setData(QBrush(Qt::green),Qt::BackgroundRole); 
      } 
    } 
} 

更多信息:

QTableView:本QTableView類提供的默認模型/視圖實現一張桌子視圖。

QStandardItemModelQStandardItemModel類提供了一種用於存儲自定義數據的通用模型。

+0

謝謝@aghilpro,你的解決方案解決了我的問題。 – annie

+0

@annie歡迎我的朋友。 – aghilpro

+0

您的解決方案爲相同字符串的多次出現返回相同的索引。例如,如果表中第2行和第4行中包含字符串「apple」,則程序將兩個事件的索引返回爲2,但我希望打印兩個事件的索引,即必須打印2和4 。你能讓我知道我該怎麼做嗎? – annie

相關問題