【问题标题】:Embedding Qt GUI into existing OpenGL program将 Qt GUI 嵌入到现有的 OpenGL 程序中
【发布时间】:2012-04-27 09:24:00
【问题描述】:

我目前正在尝试让 Qt 与我现有的程序一起工作。

我正在使用 SFML 来创建我的 OpenGL 渲染上下文并创建窗口。到目前为止,我尝试过的东西总是由 Qt 创建一个单独的窗口,而不是仅仅渲染到现有的上下文中。

有什么方法可以强制 Qt 渲染到已经存在的 OpenGL 上下文?

【问题讨论】:

  • 为什么要让 Qt 将 OpenGL 的东西渲染到非 Qt 窗口?通常,这些 API(SFML、Qt 等)喜欢拥有它们渲染到的窗口。通常不支持渲染到他们无法控制的其他人的窗口。如果没有其他原因,您可以在它们之间传递“窗口”的通用 API……
  • 原因是我试图通过将 Qt 的 GUI 库嵌入到使用 OpenGL 提供 UI 的现有应用程序中来确定是否可以工作。我想使用它的程序太大而无法调整它以使用 Qt 来处理所有事情,所以我想知道是否可以只使用它的 GUI 部分。

标签: qt opengl


【解决方案1】:

我没有调查具体细节,但this has been done for openage

我认为查看documentation for QQuickRenderControl 可能是一个不错的起点。

【讨论】:

  • 感谢您的更新。当我在 2012 年问这个问题时,Qt5 和 QQuickRenderControl 都不可用。所以这可能改变了,这真的很棒。将您的答案标记为已接受。 :-)
【解决方案2】:

Qt 想要完全控制窗口和事件循环,所以这是行不通的(除非你付出了很多努力)。您最好的选择是使用 QGLWidget 并用它模拟 SFML 的事件管理,以便您的应用程序有效地在 Qt 上运行。很可能将 Qt 小部件渲染到 OpenGL 窗口中(Qt 有一个 OpenGL 小部件后端),但这仍然必须由 Qt 本身管理。

【讨论】:

  • 不幸的是,我也这么想。太糟糕了 Qt 不能手动输入外部事件。感谢您的澄清。
猜你喜欢
  • 2016-09-25
  • 1970-01-01
  • 2013-07-13
  • 2013-08-30
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多