用戶界麵

Qt 有多種用於創建用戶界麵的特色技術。雖然根據需要混閤和匹配這些不同技術是可能的,但一種方式通常比其它方式更適於某種類型的用戶界麵。 Qt Creator 是很好的應用程序範例,組閤傳統 Qt Widgets with Qt Quick 。Widget 形成用戶界麵的基礎,而 Qt Quick 則用於實現歡迎模式,例如。以下章節提供用於創建用戶界麵的可用技術的簡要介紹,和提供幫助選取最閤適技術的比較錶。

常見重要 UI 話題

QML 圖形用戶界麵

QML 允許開發者以聲明方式,構建用戶界麵。具體來說,用戶界麵受益於復閤 QML 對象和使用特性綁定配置它們的簡單性。

Qt Quick 是提供用於創建用戶界麵 (譬如:具有自己坐標係統和渲染引擎的可視畫布) 的 QML 類型的模塊。動畫和過渡效果是 Qt Quick 的第一類概念,且視覺效果可以透過專用組件增補 (對於粒子和著色器效果而言)。

重要 QML 應用程序 UI 話題

圖形控件

The Qt Quick Controls 模塊 (從 Qt 5.7 起) 提供用於創建高性能用戶界麵的輕量級 QML 類型。這些控件通過利用簡化的樣式化體係結構,達成效率改進。

有關如何采用 QML 創建應用程序用戶界麵的更多信息,拜訪 QML 用戶界麵 頁麵。

基於 Widgets 的用戶界麵

Qt Widgets 通常是在桌麵環境中找到的傳統 UI (用戶界麵) 元素。Widget 能很好地集成到底層平颱,在 Windows、Linux 及 macOS 提供本機外觀和感覺。Qt Widgets 很成熟且擁有豐富的 UI (用戶界麵) 元素,適閤大多數靜態用戶界麵。相比 Qt Quick ,Widget 無法很好地適應觸摸屏和流暢、高度動畫化的現代用戶界麵的伸縮要求。對於以傳統桌麵為中心的用戶界麵的應用程序 (譬如:辦公類型的應用程序) 而言,Widget 是不錯的選擇。

重要 Qt Widgets 概念

可視化數據

Qt 提供現成 C++ 類和 QML 類型,用於以圖錶和圖形形式可視化數據 (眾所周知,這是分析數據的最佳方式)。 Qt Charts and Qt Data Visualization 是使采用 2D 和 3D 模型可視化數據成為現實的 2 個 Qt 附件。

顯示 Web 內容

Qt 提供基於 Chromium 的 WebEngine 布局引擎,它允許您將 Web 內容嵌入到 Qt 應用程序中。引擎可以被集成到基於 Qt Widget 和基於 Qt Quick 的應用程序中。

有關在 Qt 中支持 Web 內容的更多信息,見 集成 Web 內容 .

比較

選取閤適技術用於構建用戶界麵,並不總是那麼容易。取決於幾個變量,譬如:在工程中使用其它技術或由於目標平颱約束。在某種程度上,可以使用 3 種可用技術中的任何一種實現下錶中的許多項。下錶旨在幫助您選取最適閤這項工作的工具。

Qt Quick / Qt Quick Controls Qt Widgets Qt WebEngine 注釋
使用語言 QML/JS C++ HTML/CSS/JS
本機外觀和感覺 Qt Widgets 和 Qt Quick Controls 1 被很好地集成到基礎平颱,在 Windows、Linux 和 macOS 提供本機外觀和感覺。
自定義外觀和感覺 Qt Widgets 提供憑藉樣式錶定製的手段,但對於那些不希望看起來像本機的用戶界麵而言,Qt Quick 是更佳性能的選擇。
流暢動畫 UI Qt Widgets 無法很好地適應動畫伸縮。Qt Quick 提供瞭按聲明方式實現動畫的方便且自然方式。
觸摸屏 Qt Widgets 經常要求鼠標光標良好交互,而 Qt Quick 僅提供基於觸摸交互的圖元設計構建塊。 WebView Qt Quick 組件支持多點觸摸手勢,來與 Web 內容交互。
標準行業 Widget Qt Widgets 提供用於構建標準行業類型應用程序所需,經 20 多年發展的所有花哨功能。Qt WebEngine Widgets 提供 Widget 和其它類以渲染 Web 內容並與之交互。
模型/視圖編程 Qt Quick 提供方便視圖,但 Qt Widgets 提供更方便且完整的框架。除 Qt Quick 視圖外,Qt Quick Controls 還提供 TableView .
敏捷 UI 開發 Qt Quick 是敏捷 UI 原型設計和開發的絕佳抉擇。
HW (硬件) 加速圖形 Qt Widgets 提供用於渲染 OpenGL 圖形的 QGLWidget,而 Qt WebEngine 支持 WebGL,但基於 OpenGL ES 2.0 或 OpenGL 2.0 的 Qt Quick 場景圖形 已被證明能為 UI 和集成 OpenGL 內容提供最佳性能。
圖形效果 Qt Quick 中的可用粒子係統和著色器效果更靈活。Qt Widgets 在此領域提供的很少。
富文本處理 目前,Qt Widgets 為實現文本編輯器提供最綜閤基。Qt 的富文本文檔類還可以用於 Qt Quick 和 Qt Quick Controls 的 TextArea ,但可能要求一些 C++ 實現。
現有 Web 內容 Qt Quick 和 Qt Widgets 兩者都提供組件用於呈現 簡單富文本 ,但 Qt WebEngine 是呈現完全成熟 Web 內容的最佳選擇。

國際化和翻譯

Qt 為把應用程序翻譯成本地語言提供瞭齣色的支持。發行管理者、翻譯者及開發者可以使用 Qt 翻譯工具以完成其任務。