Russian Qt Forum
Ноябрь 24, 2024, 00:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Фильтрация иерархической модели  (Прочитано 2420 раз)
voltron
Гость
« : Март 26, 2011, 13:09 »

Есть DOM-модель xml-файла (сделана по примеру Simple DOM Model), для ее отображения используется QTreeView. Необходимо иметь возможность отображать как полное дерево, так и урезанное, состоящее из определенных узлов.

Как я понял, для этого нужно создать свою модель на основе QProxyFilterModel и переопределить метод filterAcceptsRow(). Вот в этом месте у меня и возникла проблема. Не совсем понятно как правильно реализовать filterAcceptsRow(), чтобы отображались только нужные узлы со своими дочерними элементами. Если я просто задаю список допустимых узлов и проверяю каждый узел на вхождение, то в результате получаю пустое дерево.
Записан
voltron
Гость
« Ответ #1 : Март 26, 2011, 16:49 »

Получилось отображать нужные узлы, но без дочерних элементов. Т.е., если у меня xml-файл такой структуры (фрагмент)
Код
XML
<?xml version="1.0" encoding="UTF-8"?>
<MD_Metadata xmlns:gco="http://www.isotc211.org/2005/gco"
            xmlns:gts="http://www.isotc211.org/2005/gts"
            xmlns:gss="http://www.isotc211.org/2005/gss"
            xmlns:gsr="http://www.isotc211.org/2005/gsr"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            xmlns:gml="http://www.opengis.net/gml"
            xmlns="http://www.isotc211.org/2005/gmd">
  <fileIdentifier>
     <gco:CharacterString>S5-_HRG_A--_CAM2_0132_-4_0406_-1_110126_081336_L1A-_ORBIT--Vers.0.01</gco:CharacterString>
  </fileIdentifier>
  <contact>
     <CI_ResponsibleParty>
        <individualName>
           <gco:CharacterString>Natasha Nickau</gco:CharacterString>
        </individualName>
        <organisationName>
....
 
То чтобы отобразить узел contact нужно чтобы в списке были: xml, MD_Metadata, contact. Тогда узел отображается, но его дочерние элементы — нет. Конечно, можно и их включать в список, но это как-то не очень красиво получается. Может, есть другой способ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.27 секунд. Запросов: 21.