Название: как происходит рисование виджетов Отправлено: ilyagoo от Январь 30, 2011, 20:11 например, для QWidget paintEvent(..) пустой. значит рисование происходит где-то до него, но и event(..) я ничего не углядел. может кто уже рыл в эту сторону?
Название: Re: как происходит рисование виджетов Отправлено: Fat-Zer от Январь 30, 2011, 21:58 просто предположение...
void QWidget::render(); Название: Re: как происходит рисование виджетов Отправлено: Igors от Январь 30, 2011, 22:16 Если "рисование" подразумевает "вывод на экран" - то вообще дело темное (платформо-зависимое), даже без Qt. Пример: сижу в отладчике, точка останова в "paint". Вроде бы управление должно прийти при каждой перерисовке. Но нет - я могу напр. скрыть отладчик и др. задачи - окна отлаживаемой задачи будут показаны (double-buffered). Причем точка останова не сработает. На Вындоуз не так (XP64), но то пока.
В общем случае гарантируется что действия в "paint" будут (может быть, когда-то) отображены - но не более. Ну и плюс зачистка background и.т.п может быть "до того" (устанавливается опциями) Название: Re: как происходит рисование виджетов Отправлено: ilyagoo от Январь 30, 2011, 23:44 просто предположение... void QWidget::render(); ни фига)) по крайней мере в винде. вроде как отрисовка рамки с заголовком отрисовывается при получении WM_NCPAINT. причем это событие возвращается винде, и та сама это рисует. где-то рядом и отрисовка содержимого... заинтересовало это потому, что есть желание написать dockwidget (фактически переписать QMainWindow, QDockWidget и т.д.). во-первых, при отсутствии centralWidget они работают криво, во-вторых, сделать аналог управления окнами в Visual Studio. вот только времени на это нет, поэтому буду продвигаться мелкими шагами. любая помощь приветствуется. |