QTreeView aktualisiert nicht richtig
Verfasst: 10. August 2006 17:46
Hi,
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
Wenn ich jetzt das erste Element lösche, dann wird es aus dem DomDocument richtig entfernt, die View sieht allerdings so aus:

Es wird also im DomDocument das erste Element gelöscht, im TreeView aber das letzte.
Hier der Code:
Woran liegt das??? Und gibt es noch eine andere Möglichkeit neu eingefügte oder gelöschte Elemente im View anzuzeigen (bzw. den View zu aktualisieren) als view->collapse() und view->expand()? Wenn ich ein neues Element einfüge, so wird dies nur durch eine kleine gestrichelte Line unter dem letzten Item dargestellt, erst nach collapse() und expand() wird das Item angezeigt!
Danke schonmal,
D.
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.