правильный способ обновления QGraphicsView из QGraphicsScene - PullRequest
0 голосов
/ 21 апреля 2020

Я реализовал QGraphicsScene для хранения экземпляров QGraphicsItem нескольких различных реализованных мной классов. Я до сих пор не понимаю, как обновляется QGraphicsView, связанный с этой сценой.

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

Кто-нибудь может подсказать мне, как правильно реализовать это? Как правильно уведомить мнение об изменениях в определенных областях, от чего зависит поведение. Я думаю, что-то не так с моими предположениями о системах координат. Большое спасибо за ваши объяснения.

...