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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Изменяемая Dom модель (в QTreeView)  (Прочитано 2417 раз)
Wolf-S
Гость
« : Март 01, 2012, 19:36 »

Здравствуйте.
Можете ли вы мне помочь?
Я хочу, чтобы "Simple Dom Model" пример можно было изменять. (добавить строку)

Этот код работает, но надо выгружать и загружать модель в QTreeView через XML QString.

Код:
QModelIndex currentTreeIdx = ui->treeView->selectionModel()->currentIndex();  
  
DomItem *itemRef = static_cast<DomItem*>(currentTreeIdx.internalPointer());  
  
 QDomElement newParentTag;  
 QDomElement newTextTag;  
 QDomText newText;  
  
 newParentTag = model->domDocument.createElement("Parent");  
 newTextTag =  model->domDocument.createElement("Child");  
 newText = model->domDocument.createTextNode("Child text data");  
 newTextTag.appendChild(newText);  
 newSubtitleTag.appendChild(newTextTag);  

 itemRef->node()[removed]().insertAfter(newParentTag, itemRef->node()); <--- !

A вот DomModel :: InsertRows не работает. Он заменяет текущую строку на пустую.

Код:
bool DomModel::insertRows(int position, int rows, const QModelIndex &parent){  
  
    //DomItem *parentItem = getItem(parent);  
    DomItem *parentItem = static_cast<DomItem*>(parent.internalPointer());   // reference item  
  
    bool success;  
    //emit dataChanged(parent, parent);  
  
    beginInsertRows(parent, position, position + rows - 1);  
    success = parentItem->insertChildren(position, rows, 4);  
    endInsertRows();  
  
    return success;  
}  
  
  
bool DomItem::insertChildren(int position, int count, int columns){  
    if (position < 0 || position > childItems.size()){  
        return false;  
    }  
  
    for (int row = 0; row < count; row++){  
        DomItem *item = new DomItem(*(new QDomNode()), row, this);   // <------ неправильно!?  
        childItems.insert(position, item);  
    }  
  
    return true;  
}  
« Последнее редактирование: Март 01, 2012, 19:58 от Wolf-S » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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