【问题标题】:QT OpenGL for Desktop required for windowing?窗口需要 QT OpenGL for Desktop?
【发布时间】:2014-03-25 10:25:04
【问题描述】:

我有点不确定在没有 OpenGL 支持的情况下编译 QT 5.2.1。我一直认为希望做图形的应用程序需要 OpenGL,但是当我阅读文档时,也谈到了桌面上的 2D 功能。如果我不打算使用任何图形,只想使用 QT 的窗口框架,我还需要那个桌面支持吗? 不知何故,允许它作为必需的可选组件是没有意义的,但我真的不知道它是否是必需的,因为我不知道这种支持将用于什么。

所以主要的问题是,如果我只想实现一个使用窗口和小部件的常规桌面应用程序,我不需要使用 OpenGL 支持进行编译,对吧?

到目前为止,我一直使用 wxWidgets 作为我的跨平台库,并且从来不需要接触 OpenGL,所以我会以同样的方式使用 QT。

【问题讨论】:

    标签: c++ qt opengl


    【解决方案1】:

    如果我只是想实现一个使用窗口和小部件的常规桌面应用程序,我不需要使用 OpenGL 支持进行编译,对吧?

    我认为答案是肯定的;尽管在应用程序级别,如 this thread 专门调用,从 Qt 5 开始,将图形子系统设置为光栅 -graphicssystem raster 已被弃用,但您可以将 set the window's surface type 更改为 RasterSurface,这允许使用不支持使用 OpenGL 的光栅进行渲染 @ 987654329@(非 OpenGL 绘图上下文); its API doc 证实了这一点。 QWindow's documentation 也介绍了这一点。

    如果我不打算使用任何图形,只想使用 QT 的窗口框架,我还需要那个桌面支持吗?

    是的,如果您需要QML and Qt5's QtQuick 2 render or QtGui which exclusively use OpenGL 并且是Qt 图形系统的核心部分。不,如果你可以在没有任何这些的情况下做到这一点。这个 Qt 5 Raster Window sample 正是这样做的;您会注意到项目文件中没有提及 OpenGL。

    【讨论】:

      【解决方案2】:

      答案是:这很复杂。 QtCore 将在没有 OpenGL 依赖的情况下完美运行,但是在 Qt5 中,出于性能原因,他们将小部件系统大量转向使用 OpenGL(ES)。通过 Qt 文档找到答案有点困难,但是如果您只想使用 QtWidgets 构建 Qt5 应用程序,您可以在配置语句中不指定 OpenGL,您会没事的。如果你想使用QML,那么你需要OpenGL依赖才能让它工作,但是QtWidget系统现在已经有效地完成了,所以它不会很快得到改进。

      【讨论】:

      • 如果您想在源代码之外利用 GUI 构建的优势,实际上需要使用 QML,对吗?所以我想我必须费心去弄清楚如何获得 OpenGL 支持......
      • 是的,QML 是一种声明性语言,正是为了将 UI 设计与代码分离。是的,如果您需要 QML,那么您选择使用 OpenGL,因为它是它的依赖项。
      • @Devolus:您仍然可以使用 QtWidgets 构建 GUI,但是除非您愿意构建自定义元素,否则它不会像 QML 那样“自定义”想要自己。我个人仍然将QtWidgets 用于主 UI,并根据需要构建自定义 UI 组件,但它的学习曲线有点陡峭。
      【解决方案3】:

      OpenGL 模块只有在你想使用 glWidget 时才需要,对于经典的桌面应用程序你不需要它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 1970-01-01
        • 2016-03-19
        相关资源
        最近更新 更多