我正在用 OpenGL 编写一个程序,我需要某种接口工具栏。我最初的反应是使用 GUI,然后进一步研究 C++,我意识到 GUI 依赖于您正在使用的操作系统(我在 Windows 上)。因此,我决定使用QT来帮助我。

我的问题是我是否正在采取最好/适当的方法来解决这个问题。我什至能够编写我的 OpenGL 程序并拥有我想要使用 C++ 代码创建界面来执行我想要执行的操作的 GUI。

例如,如果我创建一个简单的“控制面板”,每个方向都有箭头。在屏幕上,我有一个由 glut 创建的盒子对象,我可以连接要单击的箭头并与 openGL 程序交互以移动盒子吗?

有帮助吗?

解决方案

使用 Qt 可以解决您的问题:它通过 QtOpenGL 模块提供了对 OpenGL 的良好集成。

  1. 派生您的显示类 QGLWidget (直到 Qt 4.8)或从 QOpenGLWidget (自 Qt 5.4 起)并实现虚方法 paintGL() ETC。
  2. 您将可以访问 Qt 的信号和槽系统,以便能够捕获 Gui 事件并更新 OpenGL 显示。

其他提示

您可以在QGLWidget你描述等什么的顶部使用常规的非OpenGL的Qt控件是做-能。

有一件事情我碰到的时候做这个是正规的小部件必须是不透明的。他们是透明的那一刻以任何方式有各种他们脚下的垃圾。这是前一阵子,所以也许最新版本解决了这个问题。可能是特定于平台也因此因人而异。

留在GLUT。有没有必要添加的Qt的控制面板。你可以打开一个子窗口(或第二个窗口,无论是否适合你的方案设计更好),并绘制控件到该窗口,并使用GLUT处理鼠标交互。

此外,Qt和GLUT各自具有它们自己的事件循环。只使用Qt的事件循环,你不得不放弃很多过剩的结构,因为供应过剩事件循环不会在那里调用回调函数。 Qt的确实有功能,有让别人事件循环调用Qt的事件处理代码,但我不认为有一个简单的方法,使GLUT手从事件信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top