多屏世界的框架
跨平臺應用框架
本文引用地址:http://m.butianyuan.cn/article/267201.htm使用跨平臺應用框架確保了業(yè)務邏輯和核心功能在所有平臺都可直接重復利用。例如,每個操作系統(tǒng)會以其自己的方式暴露聯(lián)網服務,但 Qt 這樣的框架通過通用代碼接口來隱藏這些差異。對于聯(lián)網和連接,Qt Socket 類或 Qt 藍牙模塊為支持的目標平臺提供相同的 API,對程序員隱藏了平臺的實現(xiàn)細節(jié)。Qt 有多種類型的模塊:數(shù)據庫訪問,多媒體功能,以及通用連接設備功能,如相機和基于 GPS 的定位服務。
通過 Qt,開發(fā)人員可以擁有幾種方式創(chuàng)建響應式的用戶界面,并使其可以輕松地連接到應用程序的核心業(yè)務邏輯。一個是采用面向widget的技術,這項技術最初是為桌面環(huán)境構想的。
傳統(tǒng)上,連接用戶界面控件和業(yè)務邏輯的技術采用回調,就是 C 或 C++ 函數(shù)的指針。當用戶界面事件發(fā)生時,回調使用指針來通知函數(shù)相應的變化。這種方法會出現(xiàn)兩個問題。首先,程序員必須確保用正確的方法進行回調,這使維護工作復雜化,并且在用戶界面改變時,還可能導致引入錯誤。其次,該技術要求界面和業(yè)務邏輯代碼緊密連接,因為每次回調都需要確切地知道要訪問哪個函數(shù)。
Qt 避免了傳統(tǒng)回調的問題,方法是采用一種稱為信號與槽的靈活機制來管理代碼對象之間的連接。事件產生信號,而注冊并監(jiān)聽信號的函數(shù)能接收到這種特定的信號。這種連接是靈活的,因為它不要求兩個部分彼此相互了解。因此,一個信號可以連接到多個槽,使得系統(tǒng)比回調更靈活。此外,系統(tǒng)是類型安全的,確保了函數(shù)不會收到損壞的數(shù)據。由于Qt是構建在 C++ 之上的, 而C++ 默認并不提供這種機制,這是通過特殊的 Qt 元對象來實現(xiàn)的(在編譯時為 Qt 創(chuàng)建對象,以攜帶使用中的對象的動態(tài)元信息)。
通過 Qt Quick 和 Web 技術進行多屏設計的靈活性
Qt Widgets 提供更為傳統(tǒng)的基于 C++ 面向對象的方法來創(chuàng)建用戶界面,但不具備獨立于平臺的多屏應用所需的響應式用戶界面設計的所有靈活性。作為 Qt 的另一種方法,Qt Quick 利用聲明式編程風格,可以很快地開發(fā)出用戶界面。
Qt Quick 將命令式編程邏輯與聲明表示層分開,利用和 Qt 的 C++ API 相同的信號與插槽機制,使這兩個保持靈活的連接。Qt Quick 采用為 web 創(chuàng)造的概念和技術,但具有全部本地執(zhí)行的優(yōu)勢。一個關鍵的組成部分就是聲明方式設計語言 QML。
QML 基于 JavaScript,目的是支持流暢的觸摸式用戶界面的設計和創(chuàng)建。其基于事件和屬性的聲明方法將布局和界面行為與核心概念邏輯完全分開。在一個設備上用手勢可以啟動的操作在另一設備上可以用滑塊對象來完成。通過給對象綁定不同的屬性,開發(fā)人員可以快速嘗試不同的界面配置,以適應每個目標設備的獨特顯示環(huán)境。核心 C++ 業(yè)務邏輯保持相同,允許直接訪問設備和外設并優(yōu)化性能。針對不同客戶端 UX 的變化用 QML 創(chuàng)建用戶界面。
由于其基于 JavaScript 的結構,QML 允許開發(fā)人員導入第三方的類庫(可用于執(zhí)行輸入驗證),提供額外的用戶界面服務,如語音識別,或與 web 服務連接以集成RESTful的 API。有意義的情況是QML 也強大到足以處理業(yè)務邏輯。
以其核心的形式,QML 提供簡單的圖形對象,通過它可以為每個平臺構建用戶界面控件。對于常用控件,Qt Quick Controls and Layouts 類庫給開發(fā)人員提供了現(xiàn)成的對象,以適應通用平臺的本機外觀,也可以輕松改變他們來定制獨特的外觀。
為另一種設備更新用戶界面和交換一個 QML 布局文件一樣簡單,甚至改變同一個布局文件中的變量即可。例如,可以設置這些變量以確定在視圖中顯示多少元素,以及是否應該使用大小版本不同的圖標和其它的對象。所有數(shù)值和比例都可與屏幕尺寸綁定。
因為可以動態(tài)地,甚至在線加載 QML,所以可以在改進完成時遠程更新用戶界面,而不需要重新部署應用。由于 Qt 還支持直接集成 HTML5,開發(fā)人員可以構建混合界面,對動態(tài)內容采用 web 技術,擴展設備的功能,使設備可以在互聯(lián)網上提供服務。
Qt 不僅針對各種屏幕,它本身也可用作平臺。許多客戶已經部署了用 Qt 構建的軟件開發(fā)工具包 (SDKs),使他們的設備對第三方程序員開放。這種方法能夠圍繞嵌入式設備建立整個軟件生態(tài)系統(tǒng),利用社區(qū)的技能來提供增值服務。
結論
憑借廣泛的平臺支持以及可以支持新增設備類型的架構,Qt 技術為開發(fā)人員提供工具以充分利用多屏市場帶來的商機。通過把聲明式用戶界面設計與必要的業(yè)務邏輯相結合,嵌入式系統(tǒng)的開發(fā)人員能夠減少每個新平臺需要執(zhí)行的重復工作,同時為每個設備都帶來新穎的用戶界面功能。
物聯(lián)網相關文章:物聯(lián)網是什么
萬能遙控器相關文章:萬能遙控器代碼
評論