2017-08-07 10 views
2

QT C++を使用してQStringを含むセルのインデックス(つまり行番号と列番号)を調べるには、どうすればよいでしょうか?値を含むセルのインデックスを検索し、QTableViewでこれらのセルをすべてハイライト表示

(P.S.:Withoutがqtableviewでセルをクリック)

+0

あなたは検索を意味し、テーブルの値を見つけますか? – aghilpro

+0

検索後、テーブルの値の位置が欲しい – annie

+0

私の答えを更新します。 (QStartardItemModel *)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); 
      } 
    } 
} 

さらに詳しい情報:

QTableViewQTableViewクラスのデフォルトのモデル/ビューの実装を提供しますテーブルビュー。

QStandardItemModelQStandardItemModelクラスは、カスタムデータを格納するための汎用モデルを提供します。

+0

ありがとう@aghilpro、あなたのソリューションは私の問題を解決しました。 – annie

+0

@annieあなたの歓迎の私の友人。 – aghilpro

+0

解決方法は、同じ文字列が複数回出現した場合に同じインデックスを返します。たとえば、テーブルに行2と4に文字列 "apple"が含まれている場合、プログラムは両方の出現のインデックスを2として返しますが、両方の出現のインデックスを印刷する必要があります。つまり、2と4の両方を出力する必要があります。 。どうすればいいのか教えていただけますか? – annie

関連する問題