Я пытаюсь реализовать пользовательскую сцену OpenGL (завернутый в QGLWidget), но все равно использую элементы управления QT (например, слайдовые панели и кнопки). Я попытался сделать мой главный виджет QGLWidget, у которого есть QWidgets как дети. Дочерние виджеты, похоже, работают (когда я нажимаю раскрывающееся меню, появляются его параметры), но виджет не может рисовать (я вижу белый квадрат). Я изменил базовый класс моих дочерних виджетов от QWidget до QGLWidget, и теперь QPainter вызывает работу, но QT-файл GUI по-прежнему не отображается ...QGLWidget для графики и QT для GUI
Некоторые утверждают, что QGLWidget не может иметь QWidgets в качестве дочерних ... I я не уверен в этом, и я не хочу сдаваться. Кстати, я использую Visualization Library для рисования сцены OpenGL, но это всего лишь оболочка OpenGL ...
Любые подсказки, где может возникнуть проблема? Кроме того, ключевые события перестают обрабатываться по какой-либо причине, когда я добавляю подвижки в GQLWidget.
Обновление: Я пробовал различные комбинации виджетов и макетов. Кажется, что QGLWidget просто нарисован поверх всего. Я даже попытался с raise() упорядочить Z-глубину виджетов, но безрезультатно. Является ли overlayGL() единственным способом рисовать поверх виджета OpenGL?
Обновление 2 После нескольких месяцев попыток я понял, что это связано с QT. Всякий раз, когда QGLWidget нарисован поверх другого QGLWidget, функция background() первого не вызывается. Таким образом, кнопка есть и может быть нажата, но она не нарисована. Мое обходное решение заключалось в том, чтобы все рисовать с помощью QPainter - это работает. То, что мне показалось любопытным, нужно использовать QPainter :: startNativePainting(), чтобы рисовать с ним. Можно было бы ожидать, что они перегружают start() в QPainter, чтобы вызвать startNativePainting(), когда QGLWidget является устройством рисования ...
Другой (может быть, полезный) факт заключается в том, что QPainter вызывает CHANGE контекст Opengl. Поэтому, если у вас есть другой инструмент в сотрудничестве с QPainter (в моем случае Visualization Library), есть вероятность, что один из них потерпит крах (в моем случае VL, который проверяет, было ли состояние контекста очищено перед каждым фреймом).
Не можете ли вы создать не-GL-виджет в качестве главного окна, а виджет GL как его дочерний ? Таким образом, другие элементы управления, которые вы хотите в своем окне, будут братьями и сестрами из окна GL, а не детьми. –
Я пробовал это первым - он не жалуется на некоторые проблемы с GL_SRC_ALPHA. QGLWidget построен по VL [link] (http://www.visualizationlibrary.org/) и очень сложный и, следовательно, трудно отлаживать ... –
Вы пытаетесь создать объекты QWidget, всплывающие поверх QGLWidget? – cmannett85