Russian Qt Forum
Ноябрь 27, 2024, 23:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование без сохранения объектов  (Прочитано 2925 раз)
Daeloce
Гость
« : Декабрь 23, 2010, 12:42 »

Доброго времени суток всем.

Интересует следующий вопрос. Стоит задача отрисовывать массив на клетчатом поле. Если в массиве 0 то соответствующая клетка белая, если в массиве 1 то черная. Массив постоянно меняется и поле нужно постоянно перерисовывать. Сделал это через QGraphicsView и QGraphicsScene, клетку рисую с помощью addRect. Но беда в том, что QGraphicsScene запоминает все объекты(в данном случае прямоугольники) которые на нем отрисовываются. В итоге при постоянно меняющемся массиве и постоянно перерисовываемом поле течет память.

Вопрос, можно ли средствами Qt просто нарисовать прямоугольник, без создания соответствующего объекта у QGraphicsScene(средствами Qt я имею в виду, не создавая свой виджет с переопределением paintEvent)?
Записан
alexman
Гость
« Ответ #1 : Декабрь 23, 2010, 12:46 »

Сделай наследника QGraphicsItem и там рисуй весь массив!
Записан
Kolobok
Гость
« Ответ #2 : Декабрь 23, 2010, 12:52 »

Почитай про Model/View Programming в ассистенте. Потом посмотри Pixelator Example.
Записан
Daeloce
Гость
« Ответ #3 : Декабрь 23, 2010, 14:16 »

Сделай наследника QGraphicsItem и там рисуй весь массив!

В этом случае мне придется перерисовывать весь массив каждый раз, а за один раз меняется всего одна клетка...Хотелось бы нарисовать только эту клетку, а остальные не трогать.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Декабрь 23, 2010, 16:22 »

Если размер массива фиксированный, то создаёшь клетки, расставляешь их и уже потом в зависимости от состояния массива просто меняешь цвет клетки через setBrush().
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #5 : Декабрь 23, 2010, 18:44 »

Сделай наследника QGraphicsItem и там рисуй весь массив!

В этом случае мне придется перерисовывать весь массив каждый раз, а за один раз меняется всего одна клетка...Хотелось бы нарисовать только эту клетку, а остальные не трогать.
Храни pixmap и перерисовывай в нем только нужую ячейку!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 23.