新聞中心

多屏世界的框架

作者: 時(shí)間:2014-12-23 來源:電子產(chǎn)品世界 收藏

  跨平臺應(yīng)用框架

本文引用地址:http://m.butianyuan.cn/article/267201.htm

  使用跨平臺應(yīng)用框架確保了業(yè)務(wù)邏輯和核心功能在所有平臺都可直接重復(fù)利用。例如,每個(gè)操作系統(tǒng)會(huì)以其自己的方式暴露聯(lián)網(wǎng)服務(wù),但 Qt 這樣的框架通過通用代碼接口來隱藏這些差異。對于聯(lián)網(wǎng)和連接,Qt Socket 類或 Qt 藍(lán)牙模塊為支持的目標(biāo)平臺提供相同的 API,對程序員隱藏了平臺的實(shí)現(xiàn)細(xì)節(jié)。Qt 有多種類型的模塊:數(shù)據(jù)庫訪問,多媒體功能,以及通用連接設(shè)備功能,如相機(jī)和基于 GPS 的定位服務(wù)。

  通過 Qt,開發(fā)人員可以擁有幾種方式創(chuàng)建響應(yīng)式的用戶界面,并使其可以輕松地連接到應(yīng)用程序的核心業(yè)務(wù)邏輯。一個(gè)是采用面向widget的技術(shù),這項(xiàng)技術(shù)最初是為桌面環(huán)境構(gòu)想的。

  傳統(tǒng)上,連接用戶界面控件和業(yè)務(wù)邏輯的技術(shù)采用回調(diào),就是 C 或 C++ 函數(shù)的指針。當(dāng)用戶界面事件發(fā)生時(shí),回調(diào)使用指針來通知函數(shù)相應(yīng)的變化。這種方法會(huì)出現(xiàn)兩個(gè)問題。首先,程序員必須確保用正確的方法進(jìn)行回調(diào),這使維護(hù)工作復(fù)雜化,并且在用戶界面改變時(shí),還可能導(dǎo)致引入錯(cuò)誤。其次,該技術(shù)要求界面和業(yè)務(wù)邏輯代碼緊密連接,因?yàn)槊看位卣{(diào)都需要確切地知道要訪問哪個(gè)函數(shù)。

  Qt 避免了傳統(tǒng)回調(diào)的問題,方法是采用一種稱為信號與槽的靈活機(jī)制來管理代碼對象之間的連接。事件產(chǎn)生信號,而注冊并監(jiān)聽信號的函數(shù)能接收到這種特定的信號。這種連接是靈活的,因?yàn)樗灰髢蓚€(gè)部分彼此相互了解。因此,一個(gè)信號可以連接到多個(gè)槽,使得系統(tǒng)比回調(diào)更靈活。此外,系統(tǒng)是類型安全的,確保了函數(shù)不會(huì)收到損壞的數(shù)據(jù)。由于Qt是構(gòu)建在 C++ 之上的, 而C++ 默認(rèn)并不提供這種機(jī)制,這是通過特殊的 Qt 元對象來實(shí)現(xiàn)的(在編譯時(shí)為 Qt 創(chuàng)建對象,以攜帶使用中的對象的動(dòng)態(tài)元信息)。

  通過 Qt Quick 和 Web 技術(shù)進(jìn)行多屏設(shè)計(jì)的靈活性

  Qt Widgets 提供更為傳統(tǒng)的基于 C++ 面向?qū)ο蟮姆椒▉韯?chuàng)建用戶界面,但不具備獨(dú)立于平臺的多屏應(yīng)用所需的響應(yīng)式用戶界面設(shè)計(jì)的所有靈活性。作為 Qt 的另一種方法,Qt Quick 利用聲明式編程風(fēng)格,可以很快地開發(fā)出用戶界面。

  Qt Quick 將命令式編程邏輯與聲明表示層分開,利用和 Qt 的 C++ API 相同的信號與插槽機(jī)制,使這兩個(gè)保持靈活的連接。Qt Quick 采用為 web 創(chuàng)造的概念和技術(shù),但具有全部本地執(zhí)行的優(yōu)勢。一個(gè)關(guān)鍵的組成部分就是聲明方式設(shè)計(jì)語言 QML。

  QML 基于 JavaScript,目的是支持流暢的觸摸式用戶界面的設(shè)計(jì)和創(chuàng)建。其基于事件和屬性的聲明方法將布局和界面行為與核心概念邏輯完全分開。在一個(gè)設(shè)備上用手勢可以啟動(dòng)的操作在另一設(shè)備上可以用滑塊對象來完成。通過給對象綁定不同的屬性,開發(fā)人員可以快速嘗試不同的界面配置,以適應(yīng)每個(gè)目標(biāo)設(shè)備的獨(dú)特顯示環(huán)境。核心 C++ 業(yè)務(wù)邏輯保持相同,允許直接訪問設(shè)備和外設(shè)并優(yōu)化性能。針對不同客戶端 UX 的變化用 QML 創(chuàng)建用戶界面。

  由于其基于 JavaScript 的結(jié)構(gòu),QML 允許開發(fā)人員導(dǎo)入第三方的類庫(可用于執(zhí)行輸入驗(yàn)證),提供額外的用戶界面服務(wù),如語音識別,或與 web 服務(wù)連接以集成RESTful的 API。有意義的情況是QML 也強(qiáng)大到足以處理業(yè)務(wù)邏輯。

  以其核心的形式,QML 提供簡單的圖形對象,通過它可以為每個(gè)平臺構(gòu)建用戶界面控件。對于常用控件,Qt Quick Controls and Layouts 類庫給開發(fā)人員提供了現(xiàn)成的對象,以適應(yīng)通用平臺的本機(jī)外觀,也可以輕松改變他們來定制獨(dú)特的外觀。

  為另一種設(shè)備更新用戶界面和交換一個(gè) QML 布局文件一樣簡單,甚至改變同一個(gè)布局文件中的變量即可。例如,可以設(shè)置這些變量以確定在視圖中顯示多少元素,以及是否應(yīng)該使用大小版本不同的圖標(biāo)和其它的對象。所有數(shù)值和比例都可與屏幕尺寸綁定。

  因?yàn)榭梢詣?dòng)態(tài)地,甚至在線加載 QML,所以可以在改進(jìn)完成時(shí)遠(yuǎn)程更新用戶界面,而不需要重新部署應(yīng)用。由于 Qt 還支持直接集成 HTML5,開發(fā)人員可以構(gòu)建混合界面,對動(dòng)態(tài)內(nèi)容采用 web 技術(shù),擴(kuò)展設(shè)備的功能,使設(shè)備可以在互聯(lián)網(wǎng)上提供服務(wù)。

  Qt 不僅針對各種屏幕,它本身也可用作平臺。許多客戶已經(jīng)部署了用 Qt 構(gòu)建的軟件開發(fā)工具包 (SDKs),使他們的設(shè)備對第三方程序員開放。這種方法能夠圍繞嵌入式設(shè)備建立整個(gè)軟件生態(tài)系統(tǒng),利用社區(qū)的技能來提供增值服務(wù)。

  結(jié)論

  憑借廣泛的平臺支持以及可以支持新增設(shè)備類型的架構(gòu),Qt 技術(shù)為開發(fā)人員提供工具以充分利用多屏市場帶來的商機(jī)。通過把聲明式用戶界面設(shè)計(jì)與必要的業(yè)務(wù)邏輯相結(jié)合,的開發(fā)人員能夠減少每個(gè)新平臺需要執(zhí)行的重復(fù)工作,同時(shí)為每個(gè)設(shè)備都帶來新穎的用戶界面功能。

物聯(lián)網(wǎng)相關(guān)文章:物聯(lián)網(wǎng)是什么


萬能遙控器相關(guān)文章:萬能遙控器代碼



上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉