Вопрос относительно мозаичного изображения в QGraphicsView - PullRequest
3 голосов
/ 11 июня 2011

Это связано с одним из моих других вопросов.

Если я создаю мозаику большого изображения путем создания отдельного QGraphicsItem (с растровыми данными в качестве его растрового изображения), как я могу отслеживать положение QGraphicsItem в сцене?Очевидно, что для растровых данных важно, чтобы все плитки "касались", чтобы получить непрерывное изображение, и они также должны быть в правильном месте, чтобы изображение не выглядело беспорядочным.

Должна ли каждая плитка иметьметоды позиционирования, которые перемещают его по отношению к соседям сверху / слева / снизу / справа?Это кажется немного неуклюжим.Есть ли лучший способ заставить их всех двигаться вместе?

Другими словами, если я перемещаю сцену с помощью полос прокрутки или поднимаю изображение и перетаскиваю его в сцене, я хочу, чтобы всеплитки также должны двигаться и оставаться в правильном положении относительно друг друга.

Каков наилучший подход для управления макетом, какие листы необходимо визуализировать (т. Е. Только видимые) и заполнять данные только тогда, когда это необходимо?Кроме того, после рендеринга тайла, удаляются ли когда-либо данные с него и повторно заполняются из файла изображения, скажем, если он некоторое время остается вне поля зрения, а затем возвращается позже, если кто-то просматривает этот раздел?

1 Ответ

1 голос
/ 11 июня 2011

Существует (более) 2 способов сделать это:

  1. Использовать QGraphicsItemGroup , которая обрабатывает группирование элементов плитки для вас.Он перемещает, выбирает, обновляет членов своей группы, как будто они один.Я никогда не использовал его, но из документа, похоже, он работает с типичными приложениями.

  2. Нарисуйте плитки самостоятельно в paint () одного пользовательского элемента.Это дает вам полный контроль над тем, как размещать и рисовать плитки, в то время как элемент действительно действует как один элемент, поскольку это, ну, в общем, один элемент.Это то, что я делаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...