Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Требуется организовать поиск в QTreeWidget...
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
Bulb
Можно тогда первый вопрос? :)
Требуется организовать поиск в QTreeWidget и элементы удовлетворяющие определенному условию добавить в список.
Собственно вопрос - как пробежаться в цикле по всем элементам дерева?
Багира
        QTreeWidgetItem *item;
        QList<QTreeWidgetItem *> found = treeWidget->findItems(
            itemText, Qt::MatchWildcard);

        foreach (item, found) {
            treeWidget->setItemSelected(item, true);
            // Show the item->text(0) for each item.
        }
Читай описание: Традиционные классы представления элементов / Поиск
Bulb
Ок. Спасибо.
Такой поиск не подойдет. Т.к. использую свой класс в дереве и нужно искать по своим полям.
Но способ перебора нашел. Там же по ссылке, чуть выше.
rich
Требуется организовать поиск в QTreeWidget и элементы удовлетворяющие определенному условию добавить в список.
Собственно вопрос - как пробежаться в цикле по всем элементам дерева если условием является Qt::Unchecked или Qt::Checked?И ещё, в QList`e есть номера item`ов, которые можно Unchecked или Checked.
ViGOur
Так:
        QTreeWidgetItem *item;
        QList<QTreeWidgetItem *> found = treeWidget->findItems( itemText, Qt::MatchWildcard);

        foreach (item, found)
        {
                if( item->checkState( nColumn))
                {
                        // Добавляем в список...
                }
        }
rich
получается поиск по всем item дерева?
ViGOur
Да, но только нулевого столбца.

Для того, чтобы пробежать по всем элементам всех столбцов нужно добавить дополнительный цикл.
treeWidget->findItems( itemText, Qt::MatchWildcard);
// равносильно
treeWidget->findItems( itemText, Qt::MatchWildcard,  0); // Где третий аргумент функции номер столбца.
rich
долго будет.можно как то просматривать только те item, которые у меня в QListe?List генерится при постровнии дерева и содержит номера тех item'ов которые юзер может вырать
rich
точнее в листе их номера
ViGOur
Поиск в массиве элементов всегда расчитан на перебор всех элементов массива, иначе как можно определить, что к чему? :)

Единственный вариант, чтобы ускорить поиск, можно отсортировать этот массив по условию Сhecked - Unchecked, но думаю, что в твоем случае это не особо ускорит поиск...
rich
спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.