Как ограничить рисование в QGraphicsScene определенной областью?
У меня есть QChart с QLineSeries. Чтобы добавить в диаграмму пользовательские графические элементы, я использую базовый QGraphicsScene диаграммы и его соответствующиеadd*
методы.
Проблема в том, что область QGraphicsScene больше, чем область построения QChart, поэтому элементы QGraphicsItems, добавленные непосредственно в сцену, могут быть нарисованы за пределами области построения. Например:
Здесь вертикальная серая линия - это граница области построения диаграммы, а серия линий, управляемых диаграммой, обрезается в этой точке, но черные линии, добавленные непосредственно к сцене, окрашиваются за пределы границы.
Интересно, как лучше всего ограничить рисование моих пользовательских элементов областью построения диаграммы?
Говоря лучше, я имею в виду:
- Легко управлять. Это диаграмма в реальном времени с множеством настраиваемых графических элементов, которые добавляются и удаляются с течением времени.
- Не влияет на производительность.
Должен ли я добавить прозрачный элемент (виджет?) Поверх области построения диаграммы (есть plotArea
свойство для QChart, которое, я полагаю, определяет его), включить QGraphicsItem::ItemClipsChildrenToShape
а затем использовать его как родительский для моих пользовательских элементов?
Есть ли другие способы? Что мне лично не нравится, так это то, что у вас есть +1 слой в стеке QGraphicsItems. Не то чтобы мне сейчас больно, но, вероятно, это может случиться в будущем, когда вы добавляете больше элементов в диаграмму, а затем вам нужно взаимодействовать с ними. Z-порядок, распространение событий, все это может усложниться. И я предпочитаю, чтобы это было просто.