Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Август 29, 2013, 17:27



Название: QAbstractItemModel
Отправлено: demaker от Август 29, 2013, 17:27
Возможно ли объекты различных классов, унаследованных от класса QObject,
запихнуть в одну модель, а затем отобразить в виде дерева.
Т.е.
Код
C++ (Qt)
class Top1: public QObject
{
}
class parentChild: public QObject
{
}
 
class Child: public QObject
{
}
Top1 objTop1;
parentChild objparentChild1,objparentChild2,parentobjChild3;
Child objChild3_1,objChild3_2;
 

Код:
objTop1
|_____
         |_objparentChild1
         |_objparentChild2
         |                |__objChild2_1
         |
         |
         |_objparentChild3
                           |___objChild3_1
                           |___objChild3_2


Название: Re: QAbstractItemModel
Отправлено: mutineer от Август 29, 2013, 17:33
Возможно. ты сам выбираешь какие данные возвращать из модели и как их достать из объекта. Или кастомный делегат написать можно


Название: Re: QAbstractItemModel
Отправлено: demaker от Сентябрь 02, 2013, 08:20
А можете хотя бы пример привести хоть какой-нибудь.
А то в экзамплах только пример с однотипными объектами.


Название: Re: QAbstractItemModel
Отправлено: Akon от Сентябрь 02, 2013, 18:41
Так у вас объекты в известном смысле тоже однотипные - все они QObject'ы  :). Поэтому, можете пихать их в internalPointer индекса как QObject*, а дальше даункастить (qobject_cast, qdynamic_cast).


Название: Re: QAbstractItemModel
Отправлено: demaker от Сентябрь 03, 2013, 13:44
дальше даункастить (qobject_cast, qdynamic_cast).

Это как, я понимаю из какого-то класса QObject получить, но наоборот нельзя ведь


Название: Re: QAbstractItemModel
Отправлено: mutineer от Сентябрь 03, 2013, 14:09
дальше даункастить (qobject_cast, qdynamic_cast).

Это как, я понимаю из какого-то класса QObject получить, но наоборот нельзя ведь

Почему нельзя? можно, если объект на самом деле того типа, к которому пытаешься привести


Название: Re: QAbstractItemModel
Отправлено: kambala от Сентябрь 03, 2013, 14:10
можно. подобный трюк используется например для sender()'а.


Название: Re: QAbstractItemModel
Отправлено: demaker от Сентябрь 03, 2013, 14:38
 :-\ , хм ???
Вы уверены


Название: Re: QAbstractItemModel
Отправлено: Bepec от Сентябрь 03, 2013, 14:41
До. Если QObject  каст вернёт не 0 - то это указатель на ваш класс, к которому преобразовывали :) Если 0 - это не его потомок.


Название: Re: QAbstractItemModel
Отправлено: demaker от Сентябрь 03, 2013, 15:17
До. Если QObject  каст вернёт не 0 - то это указатель на ваш класс, к которому преобразовывали :) Если 0 - это не его потомок.

Классика :)