Russian Qt Forum

Qt => Вопросы новичков => Тема начата: CJ1 от Октябрь 22, 2012, 12:51



Название: Очень странная проблема
Отправлено: CJ1 от Октябрь 22, 2012, 12:51
Есть Qtreewidget
Есть дерево в первом столбце, и id ветки во втором

Дерево                |   id
Первая ветка       |   94
|
|--Доход             |   95


Делаю такой код
Код
C++ (Qt)
QList<QTreeWidgetItem*> w_item = ui->treeWidget->findItems ( "94", Qt::MatchFixedString | Qt::MatchWrap,1 );
 
 
          for (int i = 0; i < w_item.count(); i++)
          {
              ui->treeWidget->setItemSelected(w_item[i],true);
          }

находит первую ветку
Делаю такой код
Код
C++ (Qt)
          w_item.clear();
             QList<QTreeWidgetItem*> w_item1 = ui->treeWidget->findItems ( "95", Qt::MatchFixedString | Qt::MatchWrap,1 );
 
             for (int i = 0; i < w_item1.count(); i++)
             {
                 ui->treeWidget->setItemSelected(w_item1[i],true);
             }

Не находит ничего!
Почему так?


Название: Re: Очень странная проблема
Отправлено: CJ1 от Октябрь 22, 2012, 13:09
Решил! Нужно добавить флаг Qt::MatchRecursive


Название: Re: Очень странная проблема [Решено]
Отправлено: Bepec от Октябрь 22, 2012, 13:10
Логично :)

findItems ищет по детям TreeWidget. Т.е. TopLevelItem. А тебе как раз и нужен был поиск по детям детей :)


Название: Re: Очень странная проблема
Отправлено: CJ1 от Октябрь 22, 2012, 13:21
QTreeWidgetItem * QTreeWidget::topLevelItem ( int index ) const

Вот еще один вопрос, мне нужно получить элемент выше данного на уровень как это сделать? Что такое index?