Название: QListViewItemIterator зацикливается Отправлено: cresta от Август 23, 2007, 21:56 Есть листвью. В нем root-итемы (заголовки категорий). По названию каждого root-итема делаю запрос к базе данных, и все результаты запроса добавляю к этому root-итему как child итемы.
Т.е. список категорий и в каждой категории свой список товаров. Код: QListViewItemIterator it( categoryView ); Всё хорошо, список категорий и список товаров в каждой категории формируется, как и задумано. Теперь для того, чтобы визуально отделить одну категорию товаров от другой, решил в конце каждой категории (группы child'ов) вставить пустой итем как разделитель. Это те две строки, которые закомментированы. Вроде всё правильно, после добавления всех результатов запроса к текущему root'у (it.current()) добавляю пустой child. Однако при этом цикл while ( it.current() ) превращается в бесконечный. Программа не выходит из этого цикла. При этом указатель it.current() все время разный (нарастает). Почему? Название: Re: QListViewItemIterator зацикливается Отправлено: cresta от Август 24, 2007, 01:38 Идиотская логика QListViewItemIterator'а :D
Он включает в список итерируемых итемов и те итемы, которые были добавлены в процессе итерации, т.е после создания экземпляра QListViewItemIterator. Соответственно, пытается лепить итемы-разделители друг на друга, а не к последнему child-итему в категории. Попутно выполняется огромное количество пустых запросов к базе данных... Пришлось делать так: Код: QListViewItemIterator it( categoryView ); |