繁体   English   中英

切掉QGLWidget?

[英]Cut QGLWidget?

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

我不完全理解您所说的以下“剪切”和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 ,该教程的结果如下所示: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM