Использование QGraphicsView для отображения локальной карты - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь использовать QGraphicsView, чтобы отобразить изображение карты и нарисовать некоторые элементы поверх него.Границы карты находятся в декартовой системе координат, например, от NE (-500,200) до SW (600, -350).Я знаю, как отобразить пиксели изображения <-> моей системы координат.

Мне нужно добиться следующего:

  1. Добавить изображение карты на сцену и сказать Qt, каксопоставить фактические пиксели изображения с координатами сцены.
  2. Добавить графические элементы в их реальном положении, например (-100,200)

Выполнить (2) просто - просто добавьте элемент всцена.Как мне достичь (1)?что я должен делать после вызова scene-> addPixmap ()?

Edit - Несколько уточнений:

  • Я картирую внутреннюю областьнесколько сотен метров
  • Карта будет изменяться в режиме реального времени двумя способами:
    • Карта увеличивается каждые несколько секунд
    • Графические элементы перемещаются, меняют цвета и т. д.

1 Ответ

2 голосов
/ 06 декабря 2010
  1. Поместите растровое изображение в QGraphicsPixmapItem и поместите его в сцену.
  2. Вызовите setScale () , чтобы отобразить QGraphicsPixmapItem, чтобы 1 метр отображался на 1 единицу в координате сцены. то есть. setScale (0.1), если 10 пикселей в растровом изображении равны 1 метру.
  3. Обновите растровое изображение и масштаб элемента по мере необходимости.
  4. Вызовите fitInView () , чтобы увеличить изображение.
  5. Поместите другие графические элементы в сцену. Относитесь к единицам координат сцены как к метрам.
  6. ...
  7. Прибыль! :)
...