Я реализовал QGraphicsScene
для хранения экземпляров QGraphicsItem
нескольких различных реализованных мной классов. Я до сих пор не понимаю, как обновляется QGraphicsView, связанный с этой сценой.
- Когда я вызываю
addItem(QGraphicsItem)
, сцена, кажется, перерисовывается, отображая вновь добавленные элементы. - Когда я изменяю свойства моих
QGraphicsItem
экземпляров (например, вызываю setVisible(bool)
), создается впечатление, что представление не обновляется автоматически. - В настоящее время я вызываю
QGraphicsScene::update()
без каких-либо аргументов для рисования нового состояния. это работает в большинстве случаев, однако в некоторых из них происходит сбой (метод paint()
QGraphicsItem не вызывается. Я установил там точку останова, но будет ли она достигнута или нет, зависит от уровня масштабирования в QGraphicsView. Мне нужно уменьшить масштаб до определенный уровень для того, чтобы его снова вызвали). - Не работает, когда я передаю ограничивающий прямоугольник измененного элемента (координаты сцены) в
QGraphicsScene::update(QRect)
. Я не вижу изменений объектов.
Кто-нибудь может подсказать мне, как правильно реализовать это? Как правильно уведомить мнение об изменениях в определенных областях, от чего зависит поведение. Я думаю, что-то не так с моими предположениями о системах координат. Большое спасибо за ваши объяснения.