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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: (РЕШЕНО) Принудительный вызов QGraphicsScene::drawBackground() [Qt4.4]  (Прочитано 4602 раз)
Crazy Sage
Гость
« : Январь 28, 2015, 14:29 »

Доброго всем дня, возникла тут проблема с которой нужна помощь.
Есть проект с классом унаследованным от QGraphicsScene с перегруженной функцией drawBackground(), в которой отрисовка происходит не каждый раз, а только когда на сцене нет определённого типа объектов, которые гарантированно перекрывают то, что должно отрисовываться на фоне, но удаление объектов не является для сцены поводом перерисовать подложку. Вопрос - как принудительно вызвать drawBackground()? QGraphicsView::update(), QGraphicsView::viewport()->update() и QGraphicsView::scene()->update() ничего не дают.
« Последнее редактирование: Апрель 03, 2015, 14:23 от Crazy Sage » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 28, 2015, 14:46 »

но удаление объектов не является для сцены поводом перерисовать подложку.
Неправда, является.

Цитировать
QGraphicsView::viewport()->update() и QGraphicsView::scene()->update() ничего не дают.
Не верю.
Записан

Qt 5.11/4.8.7 (X11/Win)
Crazy Sage
Гость
« Ответ #2 : Январь 28, 2015, 14:51 »

Тем не менее, и по отладочной печати и по тому, что я вижу глазами - если не меняя положение прокрутки и размер сцены переключить режим отображения на содержащий\не содержащий объекты сцены, то подложка отображается нормально, но отладочной печати из drawBackground нет, если же в режиме содержащем объекты сцены, поскроллить, например, сцену, то вызывается drawBackground, проверяет режим отрисовки и затирает фон стандартной кистью, после чего при переключении режима фон пустой до первой прокрутки\изменения масштаба\изменения размера.
« Последнее редактирование: Январь 28, 2015, 15:02 от Crazy Sage » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Февраль 04, 2015, 12:35 »

QGraphicsScene::invalidate(BackgroundLayer|ForegroundLAyer)...
Записан
Crazy Sage
Гость
« Ответ #4 : Апрель 03, 2015, 14:22 »

После этого ещё пришлось вызвать qApp->processEvents(), но помогло, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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