crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> TreeView и модель на базе QAbstractItemModel, как заставить обновляться только определенный node
Delphist
  опции профиля:
сообщение 8.8.2008, 12:26
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 41
Регистрация: 4.8.2008
Из: Россия
Пользователь №: 249

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня есть класс который имеет ряд свойств и содержит внутри себя QHash с объектами того же типа в итоге получается иерархический класс:
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();
}
Причина редактирования: для кода используйте тег code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 2:53