Название: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Bolonat от Сентябрь 17, 2017, 13:42 Здравствуйте!
Не могу понять, почему возникают лишние события перерисовки paintEvent(). У меня на форме несколько виджетов, для каждого определено свое событие paintEvent(). При вызове update() всей формы вывожу в отладчик сообщения о наступлении события paintEvent() для каждого виджета, в результате наблюдаю такую картину: Код: //Первоначальная отрисовка всего, что нужно, т.е. законно отрабатывающие события paintEvent() Название: Re: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Bepec от Сентябрь 17, 2017, 14:30 Значения у вас выставляются, скорее всего.
Более подробно можно будет догадаться, увидев ваши виджеты, или хотя бы примерное описание. Первый paintEvent отрисовывает фон/виджеты без значений. Второй вызывается когда устанавливаются граничные значения. Третий - когда устанавливаются текущие значения. PS а так непонятно на самом деле, но вы по коду посмотрите, что может вызывать отрисовку виджетов и всё сразу станет ясно. Название: Re: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Bolonat от Сентябрь 17, 2017, 14:51 Значения у вас выставляются, скорее всего. [...] Спасибо. Разобралась уже. Оказывается, если рисуешь на пустом виджете, то PaintEvent возникает один раз, но если рисуешь на виджете, на который добавлено еще что-то (например, кнопка), то количество PaintEvent() растет в геометрической прогрессии.Название: Re: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Bepec от Сентябрь 17, 2017, 16:12 И да, уберите отладочные сообщения из paintEvent. Именно они тормозят вашу программу, а не сама отрисовка.
Название: Re: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Igors от Сентябрь 18, 2017, 11:26 //Все что нужно уже отрисовалось и я вижу это на экране, далее идут непонятно с чем связанные события paintEvent() А как Вы увидели что все отрисовалось? Если остановились в отладчике, то это могло сменить фокус что провоцирует новый paintEvent.А вообще для этой (и многих других) ситуаций нужно печатать трассу событий Название: Re: Несколько раз возникает событие перерисовки paintEvent() Отправлено: Bolonat от Сентябрь 19, 2017, 09:04 А как Вы увидели что все отрисовалось? Если остановились в отладчике, то это могло сменить фокус что провоцирует новый paintEvent. Остановилась в отладчике. Работаю с двумя мониторами, экранная форма отображалась на отдельном мониторе, поэтому не сворачивалась и не перекрывалась, так что новое событие paintEvent не спровоцировалось. |