Название: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: wirelesswizard от Апрель 21, 2009, 12:56 Создаю класс, который public наследует QGraphicsRectItem.
Переопределяю метод void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) При этом полученный результат - отображение прямоугольника на виджете QGraphicsView - оставляет желать лучшего. Основная проблема заключается в том, что заливка сперва вообще не видна, а затем начинает мерцать по мере изменения геометрии основного окна. Ниже приведен проблемный код, прошу помочь разобраться! 1. Заголовочный файл класса Код
2. Исходный код класса Код
3. Пример рисования объекта Код
Спасибо. Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: pastor от Апрель 21, 2009, 13:01 /* offtop */
wirelesswizard, классно оформил пост! Так держать! Будет как пример хорошего оформления :) Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: Rcus от Апрель 21, 2009, 13:29 Самое интересно осталось за точками:
как рассчитывается rect_? зачем наследоваться от QGraphicsRectItem и не использовать его pen, brush и rect? где boundingRect? Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: Khs от Апрель 21, 2009, 13:44 /* offtop */ wirelesswizard, классно оформил пост! Так держать! Будет как пример хорошего оформления :) Тока для заголовков шрифт бы поменьше :) Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: wirelesswizard от Апрель 21, 2009, 14:03 Самое интересно осталось за точками: как рассчитывается rect_? зачем наследоваться от QGraphicsRectItem и не использовать его pen, brush и rect? где boundingRect? Добавил в шапку код методов рассчета rect_. На какой стадии следует пользоваться унаследованными pen, brush и rect? Что именно даст переопределение метода boundingRect? Спасибо за быстрый ответ. Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: Rcus от Апрель 21, 2009, 14:23 Вот смотрю я и все меньше понимаю зачем нужно было порождать потомка. То что есть вполне реализуется фабричным методом.
Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: wirelesswizard от Апрель 21, 2009, 14:36 Я хочу в дальнейшем перейти с QGraphicsRectItem на QGraphicsPixmapItem, чтобы реализовать "текстуру".
Именно поэтому и использую наследование... Дополнительный вопрос: мне необходимо поворачивать прямоугольник на произвольный угол. Очевидное решение - матричное преобразование, например, можно добавить: Код в определение метода paint(...). Но что происходит с координатами прямоугольника на самом деле? Такое ощущение, как будто меняется лишь отображение прямоугольника, а его координаты считаются прежними. Кроме того, после трансформации (поворота) прямоугольника появляется ещё одна визуальная проблема. Кроме мерцания заливки - ещё и мерцание всего прямоугольника (всё что повёрнуто то и дело исчезает с виджета). При некоторых размерах окна всё становится видно. Что именно стоит поменять, чтобы прекратилось мерцание? Спасибо. Название: Re: Проблема с заливкой QGraphicsRectItem || мерцание Отправлено: Rcus от Апрель 21, 2009, 14:41 Прочитайте статью в Assistant -> "The Graphics View Framework". I mean it
|