Здравствуйте.
Можете ли вы мне помочь?
Я хочу, чтобы "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;
}