Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nix от Январь 31, 2017, 15:53



Название: QGraphicsItem
Отправлено: nix от Январь 31, 2017, 15:53
Доброго времени суток.
Вопрос в следующем, как отрисовать графический объект относительно другого графического элемента на сцене.
первая попытка:
line=new QGraphicsLineItem(10,10,30,10,0);
scene->addItem(line);
rect=new QGraphicsRectItem(-5,-5,15,15,line);
рисуем как и при использование scene->addRect(-5,-5,15,15);

line=new QGraphicsLineItem(10,10,30,10,0);
scene->addItem(line);
line->setTransform(QTransform().translate(100,100).rotate(45).translate(-100,-100));
rect=new QGraphicsRectItem(-5,-5,15,15,line);

Оба оъекта поворачиваются.
Как сделать так, чтобы: при отрисовки линии под угол 45, к примеру (5,5,10,10) система координат была повернута угла 45 относительно своего предка ( в данном случае сцены) и начало отсчета системы координат соответсвовла начальноя точки линии на сцене, в данном случае (5,5)


Название: Re: QGraphicsItem
Отправлено: nix от Январь 31, 2017, 16:14
С первым определился:
если
line =new QGraphicsLineItem(0,0,20,20,0);
line->setPos(10,10);
rect = new QGraphicsItem(-5,-5,25,25,line);

то отрисует четырехугольник, относительно сцены (5,5), а относительно линии (-5,-5). Как угол задать все остальным, чтобы вектор нормали линии соответсвовал оси x.

Если нет способа, я ест-но рассчитаю необходимый угол наклона и буду отображать элементы с углом поворота... но хотелось бы, конечно, задать систему координат и забыть...