Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: mal от Октябрь 17, 2007, 12:28



Название: Qt 4.3.0 - Глюки с координатами объекта на сцене
Отправлено: mal от Октябрь 17, 2007, 12:28
Всем привет!

Такая фигня: создаю сцену кладу на вЪю. Размер сцены задаю меньше размера вЪю
Далее создаю объект QGraphicsEllipseItem и кладу его на сцену. Но я кладу его во въю вне сцены.
Код такой:
el_item = new QGraphicsEllipseItem();
scene->addItem(el_item);
el_item->setRect(40,40,20,20);
...
тут задаю размеры айтема, кисти перья и проч.
...
претположим я его кладу в предопределенную точку на  въю. Для этого делаю преобразование от координат въю к координатам сцены:
...
QPointF ptf = view->mapToScene( QPoint(45, 45 ));

el_item->setPos(ptf);   
QPointF pt_1  = el_item->pos();
QPointF pt_2 = el_item->scenePos();
...

При этом и pt_1 и pt_2 имеют одинаковые координаты (-173, -100)
Сразу  делаю следующее :

QRectF rectF = el_item->sceneBoundingRect();

и вот тут то получаю парадокс - координаты rectF такие:
rectF={x=-133.0(0), y=-60.0(0), w=20.0(0), h=20.0(0)}

т.е. Описывающий прямоугольник айтема в координатах сцены и позиция айтема в координатах сцены имеют РАЗНЫЕ значения!
Ни с айтемом, ни со сценой в этот момент ничего не происходит. Т.е. создал, сунул на сцену, проверил коодинаты, проверил координаты описывающего прямоугольника в координатах сцены.

Как с этим бороться?


Название: Re: Qt 4.3.0 - Глюки с координатами объекта на сцене
Отправлено: mal от Октябрь 18, 2007, 07:50
Как водится  - отвечаю сам, ибо уже разобрался. ;-)

При инициализации нужно задать rect(0,0, width,height).
Тогда никакого реального смещения айтема  от его  заданной позиции на сцене не происходит.