Доброго всем времени.
Стоит задача, используя MVC в QTreeView отображать древовидную структуру данных от источника данных.
Вступление.Источник данных - это отдельный класс, который имеет приватный указатель на древовидную структуру данных, а также метод который возвращает этот приватный указатель, т.е.:
class RootNode;
class Core : public QObject
{
Q_OBJECT
public:
Core(QObject *parent = 0);
RootNode *rootNode(); //<== Метод который возвращает приватный указатель на корневую ноду.
/*
тут какие-то другие методы для управлениями дочерними узлами (добавления, удаления, заполнения данными) корневого узла
*/
private:
RootNode *m_rootNode; //<== Собственно сам указатель на корневую ноду.
};
Класс
RootNode - реализован аналогично классу из примеров : examples\itemviews\simpletreemodel\treeitem.h
Теперь, имею модель дерева в конструктор которой передается указатель на корневую ноду
core->rootNode() :
class RootNode;
class CoreTreeModel : public QAbstractItemModel
{
Q_OBJECT
public:
CoreTreeModel(RootNode *rootNode, QObject *parent = 0);
~CoreTreeModel();
/* тут определен стандартный минимальный набор методов модели
*/
private:
RootNode *rootNode;
};
Также имею класс наследованный от QTreeView в который передаю указатель на мою модель.
Проблема.Запускаю приложение, в процессе работы которого выполняется некий алгоритм, который производит добавление, изменение данных в корневом дереве класса
Core.
Необходимо, чтобы все изменения произведенные в классе
Core автоматически отображались в QTreeView .
Например, алгоритм по таймеру, каждые 5 сек создает в какие-то дочерние ноды/подноды в Core и, если QTreeView в данный момент раскрыта родительская нода (в которую добавляются дети), то в ней в этот момент добавленные дети не отображаются! Отобразятся только после того как я жмакну в QTreeView на значки " (-) / (+) " этой родительской ноды.
Подскажите, как можно реализовать всё это дело?
Или, может быть, я выбрал неудачную концепцию отображения узлов?
ЗЫ: Я попробовал запустить пример: \examples\itemviews\dirview\ - но там тоже аналогичное поведение, т.е. если я раскрываю любую директорию с файлами, и после этого создаю в ней (с помощью проводника или тотал коммандера к примеру) другие директории или файлы - то они не отображаются в примере с QDirModel.
Вот такая у мена проблема. Буду рад любой помощи. Может быть, кто-то уже красиво решил подобную задачу и поделится?