Qt GUI

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

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

使用模塊

使用 Qt 模塊要求直接或透過其它依賴鏈接到模塊庫。一些構建工具為此有貢獻支持,包括 CMake and qmake .

構建采用 CMake

使用 find_package() 命令定位所需模塊組件在 Qt5 包:

find_package(Qt5 COMPONENTS Gui REQUIRED)
target_link_libraries(mytarget Qt5::Gui)
					

另請參閱 構建采用 CMake 概述。

采用 qmake 構建

若使用 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 圖形。

Vulkan 集成

Qt5.10 添加支持 Vulkan 。這要求存在 LunarG Vulkan SDK .

在 Windows,SDK 設置環境變量 VULKAN_SDK ,會被檢測到通過 configure 腳本。

在 Android,NDK 的 API Level 24 添加瞭 Vulkan 頭。

相關類:

更多信息,見 Hello Vulkan 小部件範例 Hello Vulkan 窗口範例 .

拖放

更多信息在 拖放

許可和歸屬

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

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

ANGLE Library, version chromium/3280 BSD 3 條款新 (或修訂) 許可
ANGLE:用於 WebKit 的數組邊界鉗位器 BSD 2 條款簡化許可
ANGLE: Murmurhash 公共領域
ANGLE: Systeminfo BSD 2 條款簡化許可
ANGLE: trace_event BSD 3 條款新 (或修訂) 許可
用於新字體的 Adobe Glyph 列錶,第 1.7 版 BSD 3 條款新 (或修訂) 許可
來自 FreeType 2 的抗鋸齒光柵化器 FreeType 工程許可或僅 GNU GPL (一般公共許可) 第 2.0 版
Bitstream Vera字體,第 1.10 版 Bitstream Vera 字體許可
Cocoa 平颱插件 BSD 3 條款新 (或修訂) 許可
DejaVu 字體,第 2.37 版 Bitstream Vera 字體許可
Freetype 2 - BDF (位圖分發格式) 支持 MIT 許可
Freetype 2 - PCF (便攜式編譯格式) 支持 MIT 許可
Freetype 2 - zlib zlib 許可
Freetype 2, version 2.9.1 FreeType 工程許可或僅 GNU GPL (一般公共許可) 第 2.0 版
HarfBuzz MIT 許可
HarfBuzz-NG, version 1.7.4 MIT 許可
IAccessible2 IDL 規範,第 1.3.0 版 BSD 3 條款新 (或修訂) 許可
LibJPEG-turbo,第 2.1.1 版 獨立 JPEG 組許可和 BSD 3 條款新 (或修訂) 許可及 zlib 許可
LibPNG 第 1.6.37 版 libpng 許可和 libpng 許可 2
Android 本機風格 Apache 許可 2.0
OpenGL ES 2 頭,修訂版 27673 MIT 許可
OpenGL 頭,修訂版 27684 MIT 許可
Pixman,第 0.17.12 版 MIT 許可
平滑比例縮放算法 BSD 2 條款簡化許可和 Imlib2 許可
Vulkan API 注冊,第 1.0.39 版 MIT 許可
WebGradients MIT 許可
Wintab API LCS 電報許可
X 服務器幫手 X11 許可和曆史權限通知及免責聲明
XCB MIT 許可
sRGB 顔色 profile icc 文件 國際色彩聯盟許可

參考