Qt5 - блокировка вызова функции QWidget update () от ее дочерних элементов - PullRequest
0 голосов
/ 11 января 2019

У меня есть корневой виджет, который содержит все разные виджеты как дети Некоторые 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

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