Название: QGraphicsPolygonItem - общие переменные Отправлено: li-frost от Март 30, 2011, 10:52 Есть общий класс (к примеру А) наследованный от QGraphicsPolygonItem. В нем protected QPointF и QPolygon. Далее я наследую от этого класса (к примеру B, C) два других и в них уже рисую полигоны. Далее в главном окне программы создаю объекты классов B, C и добавляю их на сцену.
Вопрос: как сделать чтобы при смене позиции полигона созданного в классе B поменялись координаты и полигона C (т.е. произошла перерисовка полигона C)? Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: vintik от Март 31, 2011, 00:02 при смене позиции полигона созданного в классе B Неплохо бы уточнить, что значит смена позиции полигона в классе B? каким методом смена позиции будет делаться? B->polygon()->translate(x,y); или B->setPos(x,y); Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: li-frost от Март 31, 2011, 07:02 В классе B setPos(x,y), вот как класс C при это перерисовать если некоторые точки у полигона B и C общие?
Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: Igors от Март 31, 2011, 07:23 Не очень ясно что надо, но почему бы B и С не использовать указатели на общие данные (QPointF и QPolygon)
Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: GreatSnake от Март 31, 2011, 08:02 Цитата: li-frost Вопрос: как сделать чтобы при смене позиции полигона созданного в классе B поменялись координаты и полигона C (т.е. произошла перерисовка полигона C)? А каким образом у вас B и C связаны между собой? Если я правильно понял, то общий у них только базовый класс.Цитата: Igors Не очень ясно что надо, но почему бы B и С не использовать указатели на общие данные (QPointF и QPolygon) У каждого QGraphicsPolygonItem-а своя копия полигонов, поэтому просто шарить не получится.Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: li-frost от Март 31, 2011, 08:05 Цитата: li-frost Вопрос: как сделать чтобы при смене позиции полигона созданного в классе B поменялись координаты и полигона C (т.е. произошла перерисовка полигона C)? А каким образом у вас B и C связаны между собой? Если я правильно понял, то общий у них только базовый класс.Цитата: Igors Не очень ясно что надо, но почему бы B и С не использовать указатели на общие данные (QPointF и QPolygon) У каждого QGraphicsPolygonItem-а своя копия полигонов, поэтому просто шарить не получится.Да, общий только базовый класс, может я вообще не так делаю. Пробовал через Глобальные переменные, но перерисовка идет если кликнуть по итему. Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: Igors от Март 31, 2011, 08:21 У каждого QGraphicsPolygonItem-а своя копия полигонов, поэтому просто шарить не получится. Да, и на мой взгляд - это сделано неудобно, часто надо рисовать те же данные но в разных окнах.Глянул (бегло) исходники - того QGraphicsPolygonItem немного, может скопировать как свой класс и изменить что надо. Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: GreatSnake от Март 31, 2011, 08:34 Цитировать Глянул (бегло) исходники - того QGraphicsPolygonItem немного, может скопировать как свой класс и изменить что надо. А зачем? Наследуешься от QGraphicsItem, перегружаешь boundingRect() и paint(), расшариваешь полигоны и вперёд. В принципе делов-то на 20 мин.Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: li-frost от Март 31, 2011, 08:50 Цитировать Глянул (бегло) исходники - того QGraphicsPolygonItem немного, может скопировать как свой класс и изменить что надо. А зачем? Наследуешься от QGraphicsItem, перегружаешь boundingRect() и paint(), расшариваешь полигоны и вперёд. В принципе делов-то на 20 мин.Да, скорее всего это наиболее верный путь. Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: Igors от Март 31, 2011, 09:30 А зачем? Наследуешься от QGraphicsItem, перегружаешь boundingRect() и paint(), расшариваешь полигоны и вперёд. В принципе делов-то на 20 мин. Ну так "родные" полигоны остаются (вектор) и где-то могут вылезти. Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: GreatSnake от Март 31, 2011, 12:15 Цитировать Ну так "родные" полигоны остаются (вектор) и где-то могут вылезти. QGraphicsItem - абстрактый класс без всяких полигонов и т.д.Название: Re: QGraphicsPolygonItem - общие переменные Отправлено: vintik от Апрель 01, 2011, 16:36 Не забудьте, что setPos(x,y) меняет центр системы координат итема. А сами координаты полигона класса B при этом останутся неизменными(внутри класса).
|