Я не совсем понимаю, что вы подразумеваете под "вырезать" и графический интерфейс ниже.В Qt с правильно используемыми механизмами компоновки виджет потребляет область, которую он покрывает, и под ним нет виджетов.
Хотите ли вы отобразить несколько представлений в один QGLWidget?Это легко достигается при правильном использовании glViewport + glScissor .
РЕДАКТИРОВАТЬ из-за комментария
ТамЕсть два вида окон:
- Верхний уровень (те, которые вы можете свободно перемещать по экрану)
- Дочерние окна (подокна, такие как виджеты или панели в окне верхнего уровня)
Дочерние окна снова имеют две характеристики:
- логический дочерний элемент
- реальный дочерний элемент
Логическое дочернее окно состоит только изего положение, размер и слой и управляются инструментарием.С точки зрения операционной системы есть только одно окно верхнего уровня.Это набор инструментов, который управляет своим внутренним состоянием, создавая впечатление независимых окон-братьев в окне верхнего уровня.
Реальным дочерним окном управляет операционная / графическая система.Такие реальные дочерние окна могут делиться своим графическим контекстом со своими родителями и братьями и сестрами.Однако OpenGL хорошо работает, только если окно, в котором создается контекст OpenGL, имеет свой собственный графический контекст.Таким образом, любое дочернее окно OpenGL неизбежно будет иметь свой собственный графический контекст и объект окна графической системы.Большинство графических систем там не поддерживают должным образом применение фигур к дочерним окнам (только окна верхнего уровня, и это также конфликтует с OpenGL).
Таким образом, все сводится к тому, что практически невозможно или нежелательно пытаться"слой" окна OpenGL поверх родного брата.В некоторых случаях это может сработать, но в большинстве случаев это не сработает.
Это плохие новости.
Хорошие новости заключаются в том, что вы просто смотрели в несколько неверном направлении.Настоящим я направляю ваш взгляд на QGraphicsView .QGraphicsView поддерживает OpenGL в качестве бэкэнда, вы также можете написать свой собственный код рендеринга OpenGL, который будет выполняться в QGraphicsView.Но, кроме того, QGraphicsView также можно использовать для рендеринга виджетов, также используя OpenGL.Поэтому все, что вам нужно сделать, это поместить код рендеринга OpenGL и ваш виджет в общую сцену QGraphicsView, и все готово.А вот урок http://www.crossplatform.ru/node/612 результат урока выглядит так: