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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsItem и определение области, которую надо обновить  (Прочитано 2089 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Апрель 25, 2013, 09:55 »

Делаю нечто аналогичное редактору дорожек в видеоредакторах. Использую для этого QGraphicsScene. Временную линейку хочу сделать одним длинным итемом (наследник QGraphicsRectItem). И возникла проблема узнать область реальной перерисовки для итема, т.к. линейка может быть очень длинной (дни, недели..., в пикселях >100000).

Гуглил и этот форум в том числе, не нашел решения как можно выудить область обновления для итема аналогично QPaintEvent::region() ?

Сейчас думаю тупо в лоб определять видимую область графической сцены и мапить ее в координаты итема.. но это как-то не очень красивое решение (ведь обновиться может не вся видимая часть итема и нет смысла заниматься перерисовками того что не изменилось).

Что посоветуете?
Записан

Гугль в помощь
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 25, 2013, 11:11 »

Имхо, такие вещи нужно делать в QGraphicsScene::drawBackground().

И возникла проблема узнать область реальной перерисовки для итема
Код
C++ (Qt)
QRegion QPainter::clipRegion () const
« Последнее редактирование: Апрель 25, 2013, 11:13 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Апрель 25, 2013, 11:20 »

QPainter::clipRegion () - возвращает вседа что-то типа QRectF(-1153,-670 0x0) при любых перерисовках

А вот за QGraphicsScene::drawBackground() спасибо, это лучше вариант, чем я начал городить.
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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