CMyClass/
{
public:
CMyClass();
inline QString getName() const {return m_sName;}
inline CMyClass *getParent() {return m_pOwner;}
inline CMyClass& operator[](QString sKey) {return getProperty(sKey);}
...
private:
CMyClass& getProperty(QString sKey);
QHash<QString,CMyClass> m_Properties;
QString m_sName;
CMyClass *m_pOwner;
struct ListenerSlot
{/*код не особо имеющий в данном случае значение*/};
QLinkedList<ListenerSlot> m_Listeners;
};
Для отображения я использую TreeView и соответственно собственную модель данных
наследованную от QAbstractItemModel. Вопрос такой дело в том что когда у моего
объекта меняется свойство например m_sName, то для всех m_Listeners генерится OnValueChanged.
И нужно чтобы эти изменения сразу отображались в TreeView, вопрос как заставить обновляться не все дерево,
только отдельный элемент.
Конечно можно было сделать так, но это не очень эффективно:
/*прототип*/
OnValueChanged(const СMyClass &myClass)
{
Node *rootNode = GetNewNode(myClass);
MyModel->setRootNode(rootNode);
}
void CMyModel::setRootNode(Node *node)
{
delete rootNode;
rootNode = node;
reset();
}