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