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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Что делает repaint ?  (Прочитано 3424 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Октябрь 26, 2012, 14:00 »

Добрый день

Взялось отсюдв http://www.prog.org.ru/index.php?topic=23356.msg165144#msg165144. Давайте рассматривать общий случай, всякий раз упоминать "по крайней мере на некоторых платформах" не будем.

1) Самое простое "repaint (насильно) перерисовывает окно". Написано в букваре
Цитировать
Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden.
Однако пример этого не подтверждает, окно не перерисовано при выходе из repaint

2) Чуть хитрее "repaint перерисовывает окно, но в буфере, а когда обновится экран - решает OC". Тоже нет, paintEvent не было вызвано до выхода из repaint

3) Тогда как  Непонимающий

Спасибо
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Октябрь 26, 2012, 18:47 »

qbackingstore.cpp:1641 (qt-4.8.3)
Код
C++ (Qt)
#ifdef Q_WS_MAC
   // No difference between update() and repaint() on the Mac.
   update_sys(toBePainted);
   return;
#endif
 

На остальных плаформах repaint вроде должен быть честный. При беглом осмотре сорцов складывается такое впечатление.
« Последнее редактирование: Октябрь 26, 2012, 18:49 от navrocky » Записан

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

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 29, 2012, 11:35 »

На остальных плаформах repaint вроде должен быть честный. При беглом осмотре сорцов складывается такое впечатление.
Я против этого не возражаю, но тогда надо сказать внятно

Метод repaint НЕ кросс-платформенный

А в Ассыстенте этого нет - и это смущает  Улыбающийся
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #3 : Октябрь 29, 2012, 11:41 »

Согласен. Недоработочка в доке. Да и вообще repaint надо сделать deprecated, раз толку от него ноль.

Я вот кстати, как оказалось, тоже боролся недавно с repaint, я написал его в одном месте вместо update, и месяц не мог понять почему у меня интерфейс дергается при изменении размеров окна. Т.е. как будто включились native widgets.

Т.е. этот метод у меня, как назло, отрабатывал хорошо =)
Записан

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


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