Konstruktionsproblem bei QAbstractItemModel u. QTreeView
Verfasst: 25. Mai 2012 09:55
Hallo zusammen! 
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.
In dem Qt Example ist es ja so, dass ich eine neue Zeite einfüge in dem ich dem Model sage mach mal in der Reihe ein neues Item. Möchte ich aber nicht. Das soll das jeweilige Item selber tun und dem Model sagen, dass sich was geändert hat.
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?
Würde mich tierisch freuen, wenn ihr mir auf die Sprünge helft! 
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;
}