切QGLWidget?

问题描述:

是否可以剪切QGLWidget?我的意思是我想削减它,所以我可以访问下面的GUI。这听起来很奇怪,但对于我来说,将我的QGLWidget分成两部分将是很多工作。我希望你明白我的意思。谢谢切QGLWidget?

+0

不确定你要在这里做什么?你想达到什么效果?也许你想要的是在Qt中表达不同。你有任何关于你的应用程序应该是什么样子的例子吗? – blueskin

我不完全明白你的意思是“cut”和下面的GUI。在正确使用布局机制的Qt中,一个小部件会占用它所覆盖的区域,并且它下面没有小部件。

是否要将多个视图呈现为单个QGLWidget?这很容易通过正确使用glViewport + glScissor


编辑因发表评论

有两种窗口:

  • 顶级(您可以自由走动在屏幕上)
  • 子窗口(子窗口像顶级窗口中的小部件或窗格)

个窗口又进来两个特点:

  • 逻辑子
  • 真正的孩子

一个合乎逻辑的子窗口只是由它的位置,尺寸和层,并通过工具包进行管理。从操作系统的角度来看,只有一个顶级窗口。该工具包是管理其内部状态以在顶级窗口中给出独立同级窗口的印象。

一个真实的子窗口由操作/图形系统管理。这种真实的孩子窗口可以与他们的父母和兄弟姐妹分享他们的图形上下文。但是,如果创建OpenGL上下文的窗口具有其自己的图形上下文,则OpenGL只能正常工作。因此,任何OpenGL子窗口都不可避免地会拥有自己的图形上下文和图形系统窗口对象。大多数图形系统都不支持在子窗口上应用形状(只有顶层窗口,然后这也与OpenGL冲突)。

所以这一切都归结为它几乎是不可能的,也不建议尝试在兄弟的顶部“层”一个OpenGL窗口。它可能在某些情况下工作,但大多数情况下不会。

这是个坏消息。

好消息是,你只是看着一个稍微错误的方向。我在此指示你的观点为QGraphicsView。 QGraphicsView支持OpenGL作为后端,你也可以编写你自己的OpenGL渲染器代码在QGraphicsView中执行。但是,另外QGraphicsView也可以用于渲染小部件,也使用OpenGL。所以你所要做的就是把你的OpenGL渲染代码和你的小部件放到一个普通的QGraphicsView场景中并完成。这里有一个教程http://www.crossplatform.ru/node/612本教程的结果如下所示:enter image description here

+0

这是难以解释的。但我想在QWidget上放置一个QGLWidget。在Mac上不可能以相反的方式来做。现在我在QGLWidget中有两个viewort。Gui应该应该被删除。这是可能的,因为我不知道如何将两个视口放入两个小部件。我的视口互动,作为Qt的新手,我不知道如何实现这一点。所以,如果我能削减这部分的话,那将是不公平的。我在前面描述了我的问题:[link](http://stackoverflow.com/questions/7092106/defining-buttons-in-opengl-window)谢谢 – buddy

+0

@buddy:你试图做的事情,那些谁试图以庇护结束或邮寄或两者兼而有之。请参阅我的编辑以获取解释。 – datenwolf

+0

嗯,好的。我认为你的意思不是邮寄?或者这是一个新的表达。谢谢 – buddy