Russian Qt Forum
Ноябрь 03, 2024, 00:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.3.0 - Глюки с координатами объекта на сцене  (Прочитано 3636 раз)
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)}

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

Как с этим бороться?
Записан
mal
Гость
« Ответ #1 : Октябрь 18, 2007, 07:50 »

Как водится  - отвечаю сам, ибо уже разобрался. ;-)

При инициализации нужно задать rect(0,0, width,height).
Тогда никакого реального смещения айтема  от его  заданной позиции на сцене не происходит.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.