У меня есть корневой виджет, который содержит все разные виджеты как дети Некоторые QOpenGLWidgets
некоторые регулярные QWidget
.
Каждый раз, когда я хочу обновить один виджет, я вызываю update()
в дочернем виджете. Однако я обнаружил, что Qt на самом деле запускает родительскую функцию update()
дочернего элемента, если вызывается update()
дочернего элемента. Таким образом, мой QOpenGLWidget
обновляется гораздо больше, чем мне нужно (когда один QWidget
дочерний элемент update()
запускает родительский элемент update()
, а родительский update()
может запускать его дочерний элемент update()
). Это немного раздражает, потому что замедляет визуализацию. И иногда, если обновления происходят слишком часто, мой QOpenGLWidget
может мигать, потому что я еще не обновил свой frameBuffer, и он переместился на экран.
Я знаю, что Qt может оптимизировать некоторые update()
вызовы, если запланировано update()
много. Но это не решило мою проблему здесь. Я попытался QWidget::setUpdatesEnabled()
для моего корневого виджета, но он на самом деле блокирует все update()
для своих детей, кроме себя (хотя я setUpdatesEnabled(true)
для его детей).
Было бы замечательно разрешить QOpenGLWidget
планировать сам update()
вместо его родительских срабатываний update()
для него. Итак, мой вопрос, есть ли способ заблокировать update()
вызов определенного родителя / детей?
Платформа: Qt5.6.2, Ubuntu 16.04, OpenGL3.3