Qt GUI 模塊提供用於窗口係統集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖形、基本圖像、字體及文本的類。這些類用於 Qt 用戶界麵技術內部,也可以直接使用,例如:使用低級 OpenGL ES 圖形 API 編寫應用程序。
對於編寫用戶界麵的應用程序開發者而言,Qt 提供更高級彆 API (像 Qt Quick,它比在 Qt GUI 模塊中找到的使能器更適閤)。
使用 Qt 模塊要求直接或透過其它依賴鏈接到模塊庫。一些構建工具為此有貢獻支持,包括 CMake and qmake .
使用
find_package()
命令定位所需模塊組件在
Qt5
包:
find_package(Qt5 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget Qt5::Gui)
另請參閱 構建采用 CMake 概述。
若使用
qmake
去構建工程,默認包括 Qt GUI。要禁用 Qt GUI,添加以下行到
.pro
文件:
QT -= gui
Qt GUI 模塊最重要的類是 QGuiApplication and QWindow 。想要在屏幕上展示內容的 Qt 應用程序,將需要用到這些。 QGuiApplication 包含主事件循環,來自窗口係統和其它源的所有事件都會被處理和分派。它還處理應用程序的初始化及定稿。
The QWindow 類錶示在底層窗口係統中的窗口。它提供許多虛函數以處理事件 ( QEvent ) 從窗口係統,譬如:觸摸輸入、曝光、聚焦、擊鍵及幾何圖形變化。
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 可以使用。
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 圖形。
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 許可 進一步瞭解細節。
此外,Qt 5.15.17 的 Qt GUI 可能包含的第 3 方模塊遵循下列準許許可: