Russian Qt Forum

Qt => Model-View (MV) => Тема начата: zdarovo от Февраль 18, 2010, 23:10



Название: QAbstractItemModel клонирование элемента.
Отправлено: zdarovo от Февраль 18, 2010, 23:10
Есть ли возможность клонировать какой-то элемент в QTreeView.
Т.е есть у меня некоторый объект и ему должны соответствовать несколько разных элементов в таблице.
Меня интересует, как при это определять родителя?

Спасибо


Название: Re: QAbstractItemModel клонирование элемента.
Отправлено: BlackTass от Февраль 19, 2010, 20:37
Ну вообще если нужен клон то просто делаете копию и вставляете ее. А вот если это должен быть один объект... распишите лучше зачем вам такое поведение, вполне возможно это ошибка в архитектуре приложения.


Название: Re: QAbstractItemModel клонирование элемента.
Отправлено: SABROG от Февраль 22, 2010, 20:53
Я не понял о чем идет речь, но например QStandardItem можно клонировать через QStandardItem::clone(), правда клонирует без детишек.


Название: Re: QAbstractItemModel клонирование элемента.
Отправлено: zdarovo от Февраль 24, 2010, 13:36
Ну вообще если нужен клон то просто делаете копию и вставляете ее. А вот если это должен быть один объект... распишите лучше зачем вам такое поведение, вполне возможно это ошибка в архитектуре приложения.

Хорошо опишу.
Данное дерево представляет собой список задач, которые выполняются удаленно. Каждая задача может зависеть от любой другой. Именно эту зависимость я и хочу изобразить.
Т.е. есть задача З1, З2, З3, З4. Задача З2 и З3 может зависеть от З1. Эти задачи не начнут выполняться до тех пор пока не выполнится З1. Соответственно чтобы пользователь понимал что происходит, эту зависимость я изображаю в виде дерева. Копировать можно, но это ресурсоемко, если можно так сказать. Задач может быть несколько тысяч, и все они могут зависеть от какой-то одной задачи, ну не копировать же мне их в самом-то деле.
У меня есть мысли по этому поводу. Сделать класс, который будет содержать указатель на объект и затем создавать элементы относительно этого класса. В нем можно сделать указатель на родителя, на детей. Но все это не продумано и сыровато, как мне кажется. Я подумал что наверняка задача распространенная и есть какие-то стандартные средства.


Название: Re: QAbstractItemModel клонирование элемента.
Отправлено: voronElf от Февраль 24, 2010, 13:51
Цитировать
Каждая задача может зависеть от любой другой.

Другими словами, в виде дерева нужно отобразить структуру, которая деревом не является (м.б. несколько родителей у одного элемента) и поэтому нужны клоны ?
Если так, то 2 подхода: копировать (плохой варант насчет тысячи задач), либо реализовать свою модель, преобразующую на уровне индексов модели эту запутанную структуру задач в дерево.


Название: Re: QAbstractItemModel клонирование элемента.
Отправлено: BlackTass от Февраль 24, 2010, 23:27
помоему это проще отображать графом через тот же GraphicsView (что будет достаточно наглядно), чем что-то химичить с копиями (что будет вряд ли понятно пользователю)