Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Lenidoxll от Январь 19, 2021, 00:17



Название: QGraphicsObject. Ошибка отрисовки
Отправлено: Lenidoxll от Январь 19, 2021, 00:17
При анимировании итемов на сцене возникает интересный лаг: прямоугольник оставляет след, а вертикальная прямая, будто выходя за область отрисовки, оставляет свой конец неподвижным. К сожалению, понять, как сюда выкладывать картинки мне так и не удалось, поэтому вот ссылка на папку с фотографиями:
https://drive.google.com/drive/folders/18NO_BVtCff0J7ik67DP3LlIpQpsexy_y?usp=sharing
Первое, что приходит на ум - двойная буферизация, но вроде как она реализована внутри самих виджитов, да и мерцания, в общем-то, у меня нет, так что вряд ли проблема в ней.
Отмечу, что если, например, сделать прямоугольник поменьше или вообще убрать, то следов справа не остается и все двигается плавно и ровно.
Кружочек с прямоугольником (и соответственно желтая и синяя прямые) реализованы отдельным классом, их отрисовкой занимается paint.
Анимация происходит при срабатывании таймера, к сигналу которого подключен слот класса, унаследованного от QGraphicsView (на котором вся эта картина и происходит). Этот слот просто меняет позицию "особой точки" по х, после чего сдвигает класс прямоугольника, кружочка и двух прямых в новое положение особой точки (нижний конец правого черного отрезка, соединяющего кружочек в прямоугольничке с верхним кружочком, тоже соответственно смещается в новую позицию особой точки, создавая иллюзию единой конструкции).
Как думаете, с чем могут быть связанные такие лаги?

p.s.: видимо, скоро я стану одним из частых гостей форума


Название: Re: QGraphicsObject. Ошибка отрисовки
Отправлено: Lenidoxll от Январь 21, 2021, 11:54
В итоге все исправилось после указания в boundingRect больший размер отрисовки.