crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Требуется организовать поиск в QTreeWidget...
Bulb
  опции профиля:
сообщение 25.2.2008, 6:41
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 18.2.2008
Пользователь №: 100

Спасибо сказали: 0 раз(а)




Репутация:   0  


Можно тогда первый вопрос? :)
Требуется организовать поиск в QTreeWidget и элементы удовлетворяющие определенному условию добавить в список.
Собственно вопрос - как пробежаться в цикле по всем элементам дерева?

Сообщение отредактировал Сафи - 25.2.2008, 10:21
Причина редактирования: Отделено от темы: Проекту qt1L требуются он-лайн гуру-консультанты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Багира
  опции профиля:
сообщение 25.2.2008, 10:28
Сообщение #2


Злоба_дня
***

Группа: Администратор
Сообщений: 314
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 2

Спасибо сказали: 16 раз(а)




Репутация:   4  


        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
  опции профиля:
сообщение 25.2.2008, 11:18
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 18.2.2008
Пользователь №: 100

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ок. Спасибо.
Такой поиск не подойдет. Т.к. использую свой класс в дереве и нужно искать по своим полям.
Но способ перебора нашел. Там же по ссылке, чуть выше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 1.3.2008, 12:19
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


Требуется организовать поиск в QTreeWidget и элементы удовлетворяющие определенному условию добавить в список.
Собственно вопрос - как пробежаться в цикле по всем элементам дерева если условием является Qt::Unchecked или Qt::Checked?И ещё, в QList`e есть номера item`ов, которые можно Unchecked или Checked.

Сообщение отредактировал rich - 1.3.2008, 13:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.3.2008, 13:17
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Так:
        QTreeWidgetItem *item;
        QList<QTreeWidgetItem *> found = treeWidget->findItems( itemText, Qt::MatchWildcard);

        foreach (item, found)
        {
                if( item->checkState( nColumn))
                {
                        // Добавляем в список...
                }
        }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 1.3.2008, 13:30
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


получается поиск по всем item дерева?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.3.2008, 13:35
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Да, но только нулевого столбца.

Для того, чтобы пробежать по всем элементам всех столбцов нужно добавить дополнительный цикл.
treeWidget->findItems( itemText, Qt::MatchWildcard);
// равносильно
treeWidget->findItems( itemText, Qt::MatchWildcard,  0); // Где третий аргумент функции номер столбца.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 1.3.2008, 13:44
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


долго будет.можно как то просматривать только те item, которые у меня в QListe?List генерится при постровнии дерева и содержит номера тех item'ов которые юзер может вырать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 1.3.2008, 13:49
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


точнее в листе их номера
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.3.2008, 13:53
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Поиск в массиве элементов всегда расчитан на перебор всех элементов массива, иначе как можно определить, что к чему? :)

Единственный вариант, чтобы ускорить поиск, можно отсортировать этот массив по условию Сhecked - Unchecked, но думаю, что в твоем случае это не особо ускорит поиск...

Сообщение отредактировал ViGOur - 1.3.2008, 13:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 13.12.2024, 12:25