Ich hab eine kleine Frage zur Konstruktion von QAbstractItemModels. Ich hab mich versucht sehr nahe am editabletreemodel example zu orientieren.
Folgendes habe ich von der Klassenstruktur:
QAbstractItemModel
-NetworkDataModel
QObject
-NetworkDataModelItem
--Netzwerk
QObject
-NetworkDataModelItem
--Netzwerkknoten
QObject
-NetworkDataModelItem
--NetzwerkEndpunkt
So könnte die dargestellte Liste aussehen in der QTreeview:
Root
-Netzwerk 1
--Netzwerkknoten 1
---NetzwerkEndpunkt1
---NetzwerkEndpunkt2
--Netwerkknoten 2
---NetzwerkEndpunkt1
---NetzwerkEndpunkt2
---NetzwerkEndpunkt3
---NetzwerkEndpunkt4
-Netzwerk 2
-n
Der Plan war das jede Klasse für sich das Netzwerk akualisiert und NICHT das Model das füllen übernimmt. Ich hoffe das verständlich was ich meine.
Folgende Probleme habe ich. Angenommen ich sage Netzwerkknoten 1 “such mal alle deine NetzwerkEndpunkte”. Macht er soweit und aktualisiert seine Itemliste. So wie sage ich jetzt dem Model bescheid, dass sich von Netzwerkknoten 1 die Itemliste verändert hat? Ich scheiter momentan immer am QModelIndex.
So jetzt etwas anspruchsvoller. Ich verändere den Parent von Netzwerkknoten 2 und verändere diesen von Netzwerk 1 zu Netzwerk 2.. Des Sinn sein hier mal egal. Denn wie sage ich hier, dass sich was verändert hat?
Code: Alles auswählen
bool NetworkDataModelItem::setParent(NetworkDataModelItem *parent)
{
//Remove the item from the old list
if(m_parentItem)
m_parentItem->m_childItems.removeAt(childNumber());
bool ret = false;
if(parent->insertChild(this))
{
emit parentChanged();
ret = true;
}
return ret;
}