2014-03-25 26 views
1

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

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

到目前为止,我已经使用wxWidgets作为我的跨平台库,并且从不需要触摸OpenGL,所以我会以相同的方式使用QT。

回答

1

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

我认为答案是肯定的;虽然在应用程序级别,如this thread特别呼吁,从Qt 5起将图形子系统设置为光栅-graphicssystem raster已被弃用,您可以set the window's surface typeRasterSurface,它允许使用光栅渲染使用QBackingStore(非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。

0

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

1

答案是:它很复杂。 QtCore可以在没有OpenGL依赖的情况下完美运行,但是在Qt5中,为了提高性能,他们将widget系统大量移动到使用OpenGL(ES)。通过Qt文档找到答案有点困难,但是如果你只是想用QtWidgets构建一个Qt5应用程序,那么你可以在configure语句中指定没有OpenGL,并且你会没事的。如果你想使用QML,那么你需要OpenGL依赖才能使它工作,但QtWidget系统现在已经有效地完成了,所以它不会很快得到改进。

+0

实际上使用QML是国际海事组织要求的,如果你想在源代码之外建立GUI的建议,对吧?所以我想我必须去找出如何获得OpenGL支持的麻烦...... – Devolus

+0

是的,QML是一种声明式语言,正好用于从代码中分离UI设计。是的,如果你需要QML,那么你选择OpenGL,因为它是一个依赖。 – legends2k

+0

@Devolus:你仍然可以用'QtWidgets'构建一个GUI,但是除非你愿意自己构建自定义元素,否则它不会像使用QML获得的'custom'一样。我个人仍然使用'QtWidgets'作为主UI,并且只是根据需要构建自定义UI组件,但它的学习曲线略微陡峭。 –