Вероятно, ваша проблема возникает из-за того, что вы рисуете дескрипторы за пределами boundingRect () вашего элемента.
boundingRect()
необходимо реализовать во многих случаях, потому что вы делаете интересные вещи в функции paint()
, которая может выходить за пределы того, что базовый класс способен знать.
Хороший совет отладки для такого рода вещей - на самом деле нарисовать свой boundingRect () из функции paint () и убедиться, что видимый прямоугольник содержит ваш элемент соответствующим образом. Например:
painter->setPen( Qt::red )
painter->drawRect( boundingRect() );
Если вы видите, что любой из ваших предметов нарисован за пределами этого прямоугольника, то это вызовет артефакты рисования, поскольку QGraphicsScene полагается на свою точность, чтобы определить, какие части сцены необходимо перекрасить.