Название: [решено] Полилиния Отправлено: KontAr от Декабрь 05, 2011, 13:32 вопрос по полилинии. Наследовал ее от QGraphicsItem. Основой стал вектор точек. В конструкторе записал туда несколько точек, которые прекрасно отрисовались (11). Потом за маркер я вытягиваю линию (12). А вот дальше ерунда: при выделении, если руббербанд за пределами первоначальной линии (boundrect'a), то последняя просто стирается (13), если нет, то выделится (14, 12). Что не так?
Код: QRectF boundingRect() const Скрины во вложении Название: Re: Полилиния Отправлено: _OLEGator_ от Декабрь 05, 2011, 14:13 Видимо неправильно прямоугольную область определяешь.
У QGraphicsItem есть позиция (pos()), а уже относительно ее вычисляется boundingRect(). Например, линия: (10, 10) (10, 20) (20, 20) pos: (10, 10); boundingRect: (0, 0, 10, 10); Название: Re: Полилиния Отправлено: Igors от Декабрь 05, 2011, 14:42 Код
Название: Re: Полилиния Отправлено: KontAr от Декабрь 05, 2011, 15:00 У QGraphicsItem есть позиция (pos()), а уже относительно ее вычисляется boundingRect(). это я знаю, в моем примере я даже не передвигаю линию. Всего лишь растягиваю за одну из точек, в этом случае pos() неизменен.Igors, с Вашим кодом то же самое, что у меня на скринах. Может при растягивании линии как-то обновлять boundrect? Название: Re: Полилиния Отправлено: _OLEGator_ от Декабрь 05, 2011, 15:07 Попробуйте вызывать после изменения:
Код
Название: Re: Полилиния Отправлено: Igors от Декабрь 05, 2011, 15:15 Может при растягивании линии как-то обновлять boundrect? Ну если хоть 1 точка изменилась - bounding box тоже, пересчет должен быть, это само собой. Или может Вы о другом, и я не понял проблемы ?Название: Re: Полилиния Отправлено: KontAr от Декабрь 05, 2011, 15:17 Видимо о пересчете я и забыл. Олегатор, помогло. Спасибо.
Название: Re: Полилиния Отправлено: _OLEGator_ от Декабрь 05, 2011, 15:19 Переименуй свой первый пост и добавь [РЕШЕНО]
|