Qt GUI
Qt GUI模块为窗口系统集成,事件处理,OpenGL和OpenGL ES集成,2D图形,基本图像,字体和文本提供类。 这些类由Qt的用户界面技术内部使用,也可以直接使用,例如使用低级别的OpenGL ES图形API编写应用程序。
对于编写用户界面的应用程序开发人员来说,Qt提供了更高层次的API,比如Qt Quick,比Qt GUI模块中的启动器更合适。
Getting Started
要包含模块类的定义,请使用以下指令:
#include <QtGui>
如果您使用qmake构建项目,则默认包含Qt GUI。 要禁用Qt GUI,请将以下行添加到.pro
文件中:
QT -= gui
Application Windows
Qt GUI模块中最重要的类是QGuiApplication和QWindow。 想要在屏幕上显示内容的Qt应用程序需要使用这些应用程序。 QGuiApplication包含主事件循环,其中处理和分派来自窗口系统和其他源的所有事件。 它还处理应用程序的初始化和最终化。
QWindow类表示底层窗口系统中的一个窗口。 它提供了许多虚拟函数来处理来自窗口系统的事件(QEvent),例如触摸输入,曝光,焦点,击键和几何变化。
2D Graphics
Qt GUI模块包含2D图形,图像,字体和高级版式的类。
使用曲面类型QSurface :: RasterSurface创建的QWindow可以与QBackingStore和QPainter,Qt's高度优化的2D矢量图形API。 QPainter支持绘图线,多边形,矢量路径,图像和文本。 有关更多信息,请参见Paint System和Raster Window Example。
Qt可以使用QImage和QPixmap类加载和保存图像。 默认情况下,Qt支持最常见的图像格式,包括JPEG和PNG等。 用户可以通过QImageIOPlugin类添加对其他格式的支持。 有关更多信息,请参阅读写图像文件
Qt中的排版是通过QTextDocument完成的,它将QPainter API与Qt的字体类(主要是QFont)结合使用。 可以使用更多低级别的API来处理文本和字体的应用程序,比如QRawFont和QGlyphRun。
OpenGL and OpenGL ES Integration
QWindow支持使用OpenGL和OpenGL ES进行渲染,具体取决于平台支持的内容。 通过将QWindow的曲面类型设置为QSurface :: OpenGLSurface,使用QSurfaceFormat选择格式属性,然后创建QOpenGLContext来管理本机OpenGL上下文。 此外,Qt还具有Q0penGLPaintDevice,它可以使用OpenGL加速的QPainter渲染,以及方便的类来简化OpenGL代码的编写并隐藏扩展处理的复杂性以及OpenGL ES 2和桌面OpenGL的区别。 便利类包括QOpenGLFunctions,它允许应用程序在桌面OpenGL上使用所有OpenGL ES 2功能,而无需手动解析OpenGL函数指针,从而允许跨平台开发针对移动或嵌入式设备的应用程序,以及一些在简单的Qt API中封装原生OpenGL功能的类:
- QOpenGLBuffer
- QOpenGLFramebufferObject
- QOpenGLShaderProgram
- QOpenGLTexture
- QOpenGLDebugLogger
- QOpenGLTimerQuery
- QOpenGLVertexArrayObject
最后,为了更好地支持OpenGL的新版本(3.0及更高版本),还提供了一个版本化的函数包装机制:QOpenGLFunction_N_N类的系列公开了给定OpenGL版本和配置文件中的所有函数,可以轻松开发桌面应用程序依赖于现代桌面型OpenGL功能。
有关更多信息,请参阅OpenGL Window Example。
Qt GUI模块还包含一些数学类,以帮助进行与3D图形相关的最常见的数学运算。 这些类包括QMatrix4x4, QVector4D和QQuaternion
用QSurface :: OpenGLSurface创建的QWindow可以与QPainter和QOpenGLPaintDevice结合使用,以使OpenGL硬件加速2D图形,牺牲一些视觉质量。
Qt GUI Prior to Qt 5.0
在Qt 5.0之前,Qt GUI模块是Qt中与图形用户界面有关的所有东西的整体容器,包括Qt构件集,项目视图,图形视图框架以及打印。 从Qt 5开始,这些类已被移至Qt Widgets模块。 打印已转移到Qt打印支持模块。 请注意,这些模块可以从Qt安装中排除。
Qt GUI现在只包含一小组启动器,这些启动器通常对所有图形应用程序都有用。
Drag and Drop
更多信息在Drag and Drop中
Licenses and Attributions
Qt GUI可以从The Qt Company的商业许可下获得。 另外,它可以通过免费软件许可证获得。 自Qt 5.4以来,这些免费软件许可证是GNU通用公共许可证第3版或GNU通用公共许可证版本2。 See Qt Licensing for further details.
此外,Qt 5.9.5中的Qt GUI可能包含下列许可证的第三方模块:
BSD 3-clause "New" or "Revised" License | |
BSD 2-clause "Simplified" License | |
Public Domain | |
BSD 2-clause "Simplified" License | |
BSD 3-clause "New" or "Revised" License | |
Freetype Project License or GNU General Public License v2.0 only | |
BSD 3-clause "New" or "Revised" License | |
Freetype Project License or GNU General Public License v2.0 only | |
MIT License | |
MIT License | |
zlib License | |
MIT License | |
MIT License | |
BSD 3-clause "New" or "Revised" License | |
Independent JPEG Group License | |
libpng License | |
Apache License 2.0 | |
MIT License | |
MIT License | |
MIT License | |
BSD 2-clause "Simplified" License and Imlib2 License | |
Public Domain | |
MIT License | |
MIT Licenses (with no-advertisement clause) |
Reference
© 2018 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.