Qt GUI

Qt GUI 模塊提供用於窗口係統集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖形、基本圖像、字體及文本的類。這些類用於 Qt 用戶界麵技術內部,也可以直接使用,例如:使用低級 OpenGL ES 圖形 API 編寫應用程序。

對於編寫用戶界麵的應用程序開發者而言,Qt 提供更高級彆 API (像 Qt Quick,它比在 Qt GUI 模塊中找到的使能器更適閤)。

快速入門

要包括模塊類定義,使用以下指令:

#include <QtGui>
					

若使用 qmake 去構建工程,默認包括 Qt GUI。要禁用 Qt GUI,添加以下行到 .pro 文件:

QT -= gui
					
					

應用程序窗口

Qt GUI 模塊最重要的類是 QGuiApplication and QWindow 。想要在屏幕上展示內容的 Qt 應用程序,將需要用到這些。 QGuiApplication 包含主事件循環,來自窗口係統和其它源的所有事件都會被處理和分派。它還處理應用程序的初始化及定稿。

The QWindow 類錶示在底層窗口係統中的窗口。它提供許多虛函數以處理事件 ( QEvent ) 從窗口係統,譬如:觸摸輸入、曝光、聚焦、擊鍵及幾何圖形變化。

2D 圖形

Qt GUI 模塊包含用於 2D 圖形、圖像、字體及高級排印的類。

A QWindow 創建采用錶麵類型 QSurface::RasterSurface 可以用於組閤 QBackingStore and QPainter ,Qt 高度優化的 2D 嚮量圖形 API。 QPainter 支持繪製綫條、多邊形、嚮量路徑、圖像及文本。更多信息,見 描繪係統 and 光柵窗口範例 .

Qt 可以加載和保存圖像,使用 QImage and QPixmap 類。默認情況下,Qt 支持最常見的圖像格式,包括 JPEG 和 PNG 等。用戶可以添加支持其它格式憑藉 QImageIOPlugin 類。更多信息,見 讀寫圖像文件

Qt 中的排印是采用 QTextDocument 使用 QPainter API 組閤 Qt 的字體類,首要是 QFont 。應用程序首選更低級的 API 來處理文本和字體,像類 QRawFont and QGlyphRun 可以使用。

OpenGL 和 OpenGL ES 集成

QWindow 支持使用 OpenGL 和 OpenGL ES 進行渲染,取決於平颱支持哪種。OpenGL 渲染的啓用是通過設置 QWindow 的錶麵類型為 QSurface::OpenGLSurface ,選取格式屬性采用 QSurfaceFormat ,然後創建 QOpenGLContext 以管理本機 OpenGL 上下文。此外,Qt 擁有 QOpenGLPaintDevice ,啓用使用 OpenGL 加速 QPainter 渲染,還有方便類以簡化 OpenGL 代碼的編寫,隱藏擴展處理的復雜性及 OpenGL ES 2 和桌麵 OpenGL 之間的差異。方便類包括 QOpenGLFunctions 讓應用程序使用桌麵 OpenGL 的所有 OpenGL ES 2 函數,不必手動解析 OpenGL 函數指針,因此,允許跨平颱開發針對移動或嵌入式設備的應用程序,及一些在更簡單 Qt API 中包裹本機 OpenGL 功能的類:

最後,為提供對 OpenGL 較新版本 (3.0 及更高版本) 的更好支持,版本化的函數包裹器機製也是可用的:QOpenGLFunction_N_N 係列類暴露給定 OpenGL 版本和 profile 的所有函數,允許依賴現代,僅桌麵的 OpenGL 特徵,輕鬆開發桌麵應用程序。

更多信息,見 OpenGL 窗口範例 .

Qt GUI 模塊還包含一些數學類,以輔助 3D 圖形相關的最常見數學運算。這些類包括 QMatrix4x4 , QVector4D and QQuaternion

A QWindow 創建采用 QSurface::OpenGLSurface 可以用於組閤 QPainter and QOpenGLPaintDevice 通過犧牲一些視覺品質讓 OpenGL 硬件加速 2D 圖形。

Qt GUI Prior to Qt 5.0

Prior to Qt 5.0, the Qt GUI module was the monolithic container for all things relating to graphical user interfaces in Qt, and included the Qt widget set, the item views, the graphics view framework and also printing. Starting Qt 5, these classes have been moved to the Qt Widgets module. Printing has been moved to the Qt Print Support module. Please note that these modules can be excluded from a Qt installation.

Qt GUI now contains only a small set of enablers, which are generally useful for all graphical applications.

拖放

更多信息在 拖放

許可和歸屬

Qt GUI 在商業許可下是可用的來自 Qt 公司 。此外,它在自由軟件許可下也是可用的。從 Qt 5.4 起,這些自由軟件許可是 GNU LGPL (次一般公共許可) 第 3 版 ,或 GNU GPL (一般公共許可) 第 2 版 。見 Qt 許可 進一步瞭解細節。

Furthermore, Qt GUI in Qt 5.9.9 may contain third-party modules under following permissive licenses:

ANGLE Library BSD 3 條款新 (或修訂) 許可
ANGLE:用於 WebKit 的數組邊界鉗位器 BSD 2 條款簡化許可
ANGLE: Murmurhash 公共領域
ANGLE: Systeminfo BSD 2 條款簡化許可
ANGLE: trace_event BSD 3 條款新 (或修訂) 許可
來自 FreeType 2 的抗鋸齒光柵化器 FreeType 工程許可或僅 GNU GPL (一般公共許可) 第 2.0 版
Cocoa 平颱插件 BSD 3 條款新 (或修訂) 許可
Freetype 2 FreeType 工程許可或僅 GNU GPL (一般公共許可) 第 2.0 版
Freetype 2 - BDF (位圖分發格式) 支持 MIT 許可
Freetype 2 - PCF (便攜式編譯格式) 支持 MIT 許可
Freetype 2 - zlib zlib 許可
HarfBuzz MIT 許可
HarfBuzz-NG MIT 許可
IAccessible2 IDL Specification BSD 3 條款新 (或修訂) 許可
LibJPEG 獨立 JPEG 組許可
LibPNG libpng 許可和 libpng 許可 2
Android 本機風格 Apache 許可 2.0
OpenGL ES 2 Headers MIT 許可
OpenGL Headers MIT 許可
Pixman MIT 許可
平滑比例縮放算法 BSD 2 條款簡化許可和 Imlib2 許可
Wintab API 公共領域
XCB MIT 許可
xkbcommon MIT Licenses (with no-advertisement clause)

參考