Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Поиск в QTreeWidget, Не ищутся дочерние узлы в QTreeWidget  
:(
    Опции темы
Ree666
Дата 24.6.2008, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 27.5.2008

Репутация: нет
Всего: нет



Пытаюсь отыскать узел в QTreeWidget:
Код

treeWidget->findItems(searchString, Qt::MatchFixedString);


Если узел с searchString является родительским, то он нормально отыскивается, если же он дочерний, то нет. Возникает вопрос: это нормальное поведение? Если нет, то в чем может быть проблема, если да, то как отыскать дочерний узел?
PM MAIL   Вверх
JackYF
Дата 24.6.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Думаю, что тебе стоит обратить внимание на третий параметр функции, который по-умолчанию 0. Вполне возможно, тебе надо его увеличить.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Torsten
Дата 24.6.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 10.6.2008
Где: Pskov

Репутация: 3
Всего: 7



Цитата

QList<QTreeWidgetItem *> QTreeWidget::findItems ( const QString & text, Qt::MatchFlags flags, int column = 0 ) const
Returns a list of items that match the given text, using the given flags, in the given column.

Все зависит от column. Если тебе нужно найти абсолютно все элементы в древе, то нужно пройтись циклом от 0 до columnCount, примерно так :
Код

typedef QList<QTreeWidgetItem *> TreeWidgetItemList;
TreeWidgetItemList List;
for (int i = 0, nCount = treeWidget->columnCount(); i < nCount; ++i)
    List += treeWidget()->findItems(sText, nFlags, i);


Это сообщение отредактировал(а) Torsten - 24.6.2008, 14:42
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
Ree666
Дата 25.6.2008, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 27.5.2008

Репутация: нет
Всего: нет



Приведу полный код: 
Код

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QTreeWidget widget;
    QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget*)0, QStringList("1"));
    widget.addTopLevelItem(item);

    QTreeWidgetItem *childItem = new QTreeWidgetItem((QTreeWidget*)0, QStringList("2"));
    item->addChild(childItem);

    int count = widget.columnCount();
    int s1 = widget.findItems("1", Qt::MatchFixedString).count();
    int s2 = widget.findItems("2", Qt::MatchFixedString).count();

    widget.show();

    return app.exec();
}


В результате count = 1, s1 = 1, s2 = 0. То есть "2" в потомке он не находит, колонка одна, так что увеличение третьего параметра не приводит к нужному результату.
PM MAIL   Вверх
Amnet
Дата 15.9.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Попробуй добавить флаг  Qt::MatchRecursive

примерно так
int s2 = widget.findItems("2", Qt::MatchFixedString| Qt::MatchRecursive).count();

Подробнее здесь
http://qt.nokia.com/developer/faqs/762

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.