How can I find subitems in a QTreeWidget using findItems?

In order to find subitems in a QTreeWidget using findItems() [doc.qt.nokia.com] you need to specify the Qt::MatchRecursive [qt.nokia.com] flag.

The following example illustrates how this can be done:

  1. #include <QtGui>
  2. int main( int argc, char** argv )
  3. {
  4.     QApplication app( argc, argv );
  5.    
  6.     QTreeWidget* treeWidget = new QTreeWidget;
  7.     treeWidget->setWindowTitle("Test");
  8.     treeWidget->setColumnCount(4);
  9.    
  10.     QTreeWidgetItem* item = NULL;
  11.     for (int l=0; l<10; l++)
  12.     {
  13.         item = new QTreeWidgetItem(treeWidget);
  14.         item->setText(0, QString::number(l));
  15.         item->setText(1, QString::number(l));
  16.         item->setText(2, QString::number(l));
  17.         item->setText(3, "test");
  18.         item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled );
  19.         item->setCheckState(0, Qt::Unchecked);
  20.     }
  21.    
  22.     QList<QTreeWidgetItem*> items = treeWidget->findItems("test",Qt::MatchExactly, 3);
  23.     int num = items.count();
  24.     qDebug("first time: %d", num);
  25.    
  26.     for (int l=0; l<5; l++)
  27.     {
  28.         item = new QTreeWidgetItem(treeWidget->topLevelItem(4));
  29.         item->setText(0, QString::number(l));
  30.         item->setText(1, QString::number(l));
  31.         item->setText(2, QString::number(l));
  32.         item->setText(3, "test");
  33.         item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled );
  34.         item->setCheckState(0, Qt::Unchecked);
  35.     }
  36.    
  37.     treeWidget->show();
  38.    
  39.     items = treeWidget->findItems("test", Qt::MatchExactly, 3);
  40.     items = treeWidget->findItems("test", Qt::MatchExactly | Qt::MatchRecursive, 3);
  41.     num = items.count();
  42.    
  43.     qDebug("Second time: %d", num);
  44.     return app.exec();
  45. }

No comments

Write a comment

Sorry, you must be logged in to post a comment.