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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Отрисовка части изображения в QPaintEvent при изменении размера окна  (Прочитано 13925 раз)
marbius
Гость
« Ответ #15 : Апрель 26, 2010, 10:59 »

Qt::WA_StaticContents

Цитировать
Indicates that the widget contents are north-west aligned and static. On resize, such a widget will receive paint events only for parts of itself that are newly visible. This flag is set or cleared by the widget's author.

К сожалению, теория расходится с практикой: перерисовывается область (0;0; width*height)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #16 : Апрель 26, 2010, 11:44 »

Цитировать
К сожалению, теория расходится с практикой: перерисовывается область (0;0; width*height)
Похоже, что именно так и есть.
Есть большое подозрение, что тролли оставили поддержку этого флага только для top-level окон.
Кстати, вы не указали paintEvent() какого виджета отрабатывает?
« Последнее редактирование: Апрель 26, 2010, 11:48 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
marbius
Гость
« Ответ #17 : Апрель 26, 2010, 12:15 »

Как всегда, все гениальное просто Улыбающийся

Установка следующих аттрибутов решает проболему:

setAttribute(Qt::WA_StaticContents,true);
setAttribute(Qt::WA_NoBackground,true);

Всем спасибо.
Вопрос закрыт.
Записан
marbius
Гость
« Ответ #18 : Апрель 26, 2010, 12:17 »

Кстати, вы не указали paintEvent() какого виджета отрабатывает?

наследника от QWidget
Записан
alexman
Гость
« Ответ #19 : Апрель 26, 2010, 12:20 »

Qt::WA_NoBackground - This value is obsolete. Use WA_OpaquePaintEvent instead.
Записан
marbius
Гость
« Ответ #20 : Апрель 26, 2010, 12:23 »

Qt::WA_NoBackground - This value is obsolete. Use WA_OpaquePaintEvent instead.

Согласен. Только ОБЯЗАТЕЛЬНО совместно с Qt::WA_StaticContents, т.е. чтобы оба указанных аттрибута были установлены:

РЕШЕНИЕ

Код:
setAttribute(Qt::WA_StaticContents,true);
setAttribute(Qt::WA_OpaquePaintEvent,true);
« Последнее редактирование: Апрель 26, 2010, 13:01 от marbius » Записан
alexman
Гость
« Ответ #21 : Апрель 26, 2010, 12:39 »

Qt::WA_NoBackground - This value is obsolete. Use WA_OpaquePaintEvent instead.

Согласен. Только ОБЯЗАТЕЛЬНО совместно с Qt::WA_StaticContents, т.е. чтобы оба указанных аттрибута были установлены:
Код:
setAttribute(Qt::WA_StaticContents,true);
setAttribute(Qt::WA_OpaquePaintEvent,true);
Да, надо взять на заметку.
Записан
marbius
Гость
« Ответ #22 : Апрель 26, 2010, 12:45 »

Мои извинения, что не указал изначально, но это решение для Windows-платформы, на других еще не проверял. Возможно, там появятся свои нюансы (грабли).
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #23 : Апрель 26, 2010, 12:49 »

Под X11 работает.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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