Название: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 12:42 Есть модель
Код: Base-----|---------| Создаю абстрактный класс элемента модели Код Затем отдельно для каждого класса элемента Base: Код Station: Код
Device: Код
Хочу чтобы при нажатии на элемент модели подгружалась картинка сцены во вьювер, но к сожалению такого не происходит программа вылетает не могу понять почему??? Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 12:51 Вот как выглядит окно
Слева общая модель - типа дерево Справа модель - типа листа. При нажатии на элемент модели дерево модель листа обновляется для отображения элементов входящих в текущий выбранный элемент. Внизу GraphicsView. Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 12:58 Вот что показывает Debug при возникновении ошибки
Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 12:58 Если надо могу выслать весь проект :)
Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 13:46 Вот проект
Спасибо! Название: Re: Model-View + QGraphicsScene Отправлено: Racheengel от Апрель 27, 2016, 15:13 1. Зачем для каждого элемента создавать отдельную сцену?
2. В QVariant Station::getIcon() и подобных используйте механизм ресурсов, а не иконки по непонятному пути. Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 15:26 1. Зачем для каждого элемента создавать отдельную сцену? 2. В QVariant Station::getIcon() и подобных используйте механизм ресурсов, а не иконки по непонятному пути. 1.после того как будет выбран элемент модели, подгружается сцена этого элемента с отрисовкой того количества элементов сколько этот выбранный элемент в себя включает. 2.К сожалению я не понял что Вы имели ввиду ??? Название: Re: Model-View + QGraphicsScene Отправлено: Racheengel от Апрель 27, 2016, 15:36 я про это
Код: QVariant Device::getIcon() Положите все иконки в ресурсы и замените первую строчку на что то типа static QIcon icon(":/icons/myDeviceIcon"); Иначе при перенесении проги на др. машину пропадут иконки. По поводу сцены - ее надо убрать из самих девайсов и сделать частью окна-превью (связав с QGraphicsView). При вызове превью уже будете на сцену кидать то, что хотите отобразить. Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 15:46 я про это Код: QVariant Device::getIcon() { static QIcon icon("C:/Qt/Qt5.2.1/Tools/QtCreator/bin/build-MyMTLYNX-Desktop_Qt_5_2_1_MinGW_32bit-Debug/image/device.png"); return QVariant::fromValue<QIcon>(icon); } Положите все иконки в ресурсы и замените первую строчку на что то типа static QIcon icon(":/icons/myDeviceIcon"); Иначе при перенесении проги на др. машину пропадут иконки. Переделал спасибо :) По поводу сцены - ее надо убрать из самих девайсов и сделать частью окна-превью (связав с QGraphicsView). При вызове превью уже будете на сцену кидать то, что хотите отобразить. Т.е нужно создать объект который будет формировать сцену и выдавать на нее указатель при клике на элемент модели, я Вас правильно понял. Название: Re: Model-View + QGraphicsScene Отправлено: Racheengel от Апрель 27, 2016, 16:03 Сцена - должна быть частью модели? Что-то в ней будет храниться важное?
Или она только для отображения служит? Если второе, то сделайте функцию в CommonElement типа void ShowOnScene(QGraphicsScene* scene) и пусть ее вьювер вызывает, когда юзер на соотв. элемент модели кликнет. И эта функция будет уже менять сцену. Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 27, 2016, 16:27 Сцена - должна быть частью модели? Что-то в ней будет храниться важное? Или она только для отображения служит? У нас есть модель элемент-модели может быть как parent так и child. при нажатии на этот элемент на сцене отображаются все его дочерние элементы. Отображаются т.е имеется ввиду рисуются квадратики или ... И при нажатии на сцене на любой дочерний элемент, мы должны перейти соответственно на его сцену и отрисовать все дочерние элементы, а также селектор в treeview должен перейти на этот элемент. Получается при создании Элемента модели в ней должен создаваться объеты типа Код: QGraphicsObject и QGraphicsScene Если да, то когда я пишу код создания сцены в элементе-модели, то программа у меня падает ??? Название: Re: Model-View + QGraphicsScene Отправлено: Racheengel от Апрель 27, 2016, 18:00 Ваши элементы - это наследники QGraphicsObject.
А сцена - это то, что их компонует. Создавайте для каждого элемента отдельный QGraphicsObject и пакуйте их на сцену, которая связана с вьювером. Кликнул юзер на элемент - очищаете сцену и выводите на нее содержимое выбранного элемента. Как то так. Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 28, 2016, 11:19 Сделал как Вы сказали
Код
Код
Код
Обработка сигнала при клике на TreeView Код
Скажите может я что-то делаю не правильно ??? Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 28, 2016, 12:11 Прошу прощнеия
Код: scene->clear(); удаляет все объекты со сцены Название: Re: Model-View + QGraphicsScene Отправлено: Racheengel от Апрель 28, 2016, 14:00 так заработало то или как?
Название: Re: Model-View + QGraphicsScene Отправлено: demaker от Апрель 28, 2016, 22:14 Да спасибо :)
|