ich habe ein DomModel für XML-Daten. Wenn ich jetzt eine Tag mittels removeRow() aus meinem Model lösche, so wird das richtige Tag im DomDocument gelöscht, allerdings wird dies im TreeView nicht richtig angezeigt - dort wird immer das letzte Item gelöscht.
Ein Beispiel: Ich habe folgendes XML
Code: Alles auswählen
<CRM_Set>
<class description="CRM Entity" type="E01" text="111111111" />
<class description="CRM Entity" type="E01" text="222222222" />
<class description="CRM Entity" type="E01" text="333333333" />
</CRM_Set>
Es wird also im DomDocument das erste Element gelöscht, im TreeView aber das letzte.
Hier der Code:
Code: Alles auswählen
bool DomModel::removeRow(int row, const QModelIndex &parent)
{
DomItem *parentItem;
parentItem = static_cast<DomItem*>(parent.internalPointer());
QDomNode parentNode = parentItem->parent()->node();
QDomNode node = parentItem->node();
beginRemoveRows(parent, row, row);
parentNode.removeChild(node);
endRemoveRows();
return true;
}Code: Alles auswählen
void MainWindow::deleteItem()
{
DomItem *parentItem;
QModelIndex index = view->currentIndex();
parentItem = static_cast<DomItem*>(index.internalPointer());
int row = model->rowCount(index);
if(index.isValid())
{
model->removeRow(row, index);
}
//view->dataChanged(index, index);
view->collapse(index.parent());
view->expand(index.parent());
}Danke schonmal,
D.