Перерисовка QGLWidget с 3D + 2D графикой - PullRequest
2 голосов
/ 18 июля 2010

У меня есть QGLWidget, который рисует как 3D, так и 2D графику (точно так же, как в примере перерисовки Qt ).Дело в том, что после того, как я добавил рисование 2D-графики (переместил код из paintGL () в paintEvent () и т. Д.), Виджет перестал перерисовываться в большинстве случаев.Он не перерисовывался после переназначения, после загрузки и так далее.Поэтому я поставил repaint() звонки, в некоторых случаях это помогло, но не помогло, например, изменить размер.

Так, какую функцию я должен использовать, чтобы обновить виджет?Это update() или updateGL() или repaint()?Или, может быть, есть способ установить какой-то режим для включения автоматического перерисовки после изменения размера / load /...?

Спасибо.

1 Ответ

4 голосов
/ 18 июля 2010

Обычно вы должны использовать «обновление», так как это позволит объединить несколько событий рисования в очереди в одно событие. Метод update будет вызывать updateGL для QGLWidgets. Метод «перекрасить» следует использовать, если вы хотите немедленную перерисовку.

Если вы подключили таймер для периодического вызова «обновления», то отсутствие регулярной перерисовки обычно указывает на нагрузку на процессор.

Размещение некоторого кода может облегчить понимание проблем с изменением размера / инициализацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...