自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

QML教程:Review Native Quick Widgets

移動(dòng)開(kāi)發(fā)
在前文中我們分別介紹了《Qt-Quick六大開(kāi)源組件》、《構(gòu)建和安裝QtComponents》和《Qtmediahub項(xiàng)目概述》,本文為本系列的第四篇文章:Review Native Quick Widgets。

在前面到系列文章中,筆者只給了Native Quick Widget二星的評(píng)價(jià),現(xiàn)在看來(lái),這是一個(gè)非常膚淺的認(rèn)識(shí),在沒(méi)有深入源碼和具體功能到前提下,僅僅依靠界面來(lái)判斷是非常愚蠢到行為。

這也提示了筆者,每個(gè)開(kāi)源項(xiàng)目都有存在都有它到可取之處,由于開(kāi)源者無(wú)私到分享,才能鑄就出更好的軟件,提供更好到代碼邏輯。

這套Native Quick Widgets也是,它的存在價(jià)值并不是提供了美侖美煥的界面,而是提供了在目前到QtQuick中缺失的幾個(gè)重要功能。

這幾個(gè)功能作為觸摸屏的移動(dòng)設(shè)備開(kāi)發(fā)來(lái)說(shuō),并沒(méi)有非存在不可的的價(jià)值,但是一旦將QML應(yīng)用于桌面開(kāi)發(fā),就顯示出巨大的影響。

很顯然,Native Quick Widgets的作者應(yīng)該是使用QML進(jìn)行了桌面軟件開(kāi)發(fā)或者在這方面的嘗試,因此意識(shí)到了這方面的不足,才有這套組件的出現(xiàn)。

首先對(duì)這套QML組件進(jìn)行最基本的分析,通過(guò)閱讀源碼發(fā)現(xiàn),它提供了7個(gè)自定義QML元素:

1.Button元素

2.CheckBox元素

3.CursorArea元素

4.LineEdit元素

5.MenuAction元素

6.Menu元素

7.ProgressBar元素

8.ScrollBar元素

除了這些元素,還提供了7個(gè)QML組件:

1.Button.qml

2.ContextMenu.qml

3.ProgressBar.qml

4.ScrollBar.qml

5.CheckBox.qml

6.LineEdit.qml

7.ScrollArea.qml

逐一對(duì)這些進(jìn)行分析,就可以發(fā)現(xiàn)這些組件提供的功能對(duì)于進(jìn)行桌面開(kāi)發(fā)的重要意義,從上面列出的QML組件和QML元素可以抽取出這些功能點(diǎn):

1.最基本的按鈕,用于用戶的事件觸發(fā)

2.輸入編輯框,用于用戶的輸入

3.進(jìn)度條,用戶顯示一個(gè)事件的處理進(jìn)度

4.菜單和菜單動(dòng)作,用于區(qū)域的用戶事件觸發(fā)

5.滾動(dòng)條和滾動(dòng)區(qū)域,用于查看可視范圍外的界面

6.鼠標(biāo)顯示區(qū)域,用于改變鼠標(biāo)顯示的形狀

前三個(gè)功能點(diǎn),并不是特別需要或者重要,因?yàn)槭褂迷腝ML也能完成這些功能點(diǎn),并且能夠編寫(xiě)出非常絢麗的效果,但是下面三點(diǎn)就不同了。

首先應(yīng)該明白QML及QtQuick這門(mén)技術(shù)的適用范圍,這是與傳統(tǒng)UI不同的模式,并且設(shè)計(jì)之初更像是應(yīng)用于觸摸屏等移動(dòng)設(shè)備,而不是桌面應(yīng)用。針對(duì)這三個(gè)功能點(diǎn)來(lái)比較下移動(dòng)設(shè)備和桌面開(kāi)發(fā)的差異。

菜單功能在兩者之間的差異:

1.桌面上菜單必不可少,右鍵菜單,或者是依附按鈕的菜單,都是提供用戶進(jìn)行操作的捷徑,并且,菜單往往是多級(jí)的,二三級(jí),甚至四級(jí)菜單都會(huì)存在,而觸摸屏設(shè)備內(nèi),由于屏幕尺寸的限制,往往多是一級(jí)菜單或者是沒(méi)有菜單,基本多由按鈕來(lái)完成必要的事件觸發(fā);

2.在桌面上,鼠標(biāo)有右鍵可以觸發(fā)菜單,在觸摸屏上,操作就是點(diǎn)擊或者放開(kāi),這是菜單非必需的重要理由,哪怕是多點(diǎn)觸摸,既然可以多點(diǎn)觸摸了,那為什么還需要菜單還進(jìn)行事件觸發(fā)呢,手勢(shì)操作會(huì)顯得更加便捷;

從這兩點(diǎn)就已經(jīng)可以看出兩者的重大差異,更為重要的是,針對(duì)QML本身來(lái)說(shuō),由于采取的是以圖元為基礎(chǔ)的DirectUI,雖然可以實(shí)現(xiàn)自我繪制菜單,但是對(duì)于緊張的開(kāi)發(fā)周期來(lái)說(shuō),這些實(shí)現(xiàn)的時(shí)間無(wú)疑是揮霍。

滾動(dòng)功能在兩者之間的差異:

這也是桌面上必備的功能,觸摸屏設(shè)備也同樣具有,但是同樣受限于觸摸屏設(shè)備的尺寸,用戶不可能把手點(diǎn)在微小的滾動(dòng)條上滾動(dòng),而是在滾動(dòng)區(qū)域,這點(diǎn)在ipad上的操作就可以體現(xiàn)出來(lái)??墒峭瑯拥牟僮髂玫阶烂嫔?,雖然有慣性滾動(dòng),但是這樣的操作是現(xiàn)在的桌面用戶無(wú)論如何都接受不了的;

QML的基本元素中提供了滾動(dòng),但是它不適用于傳統(tǒng)的桌面表現(xiàn)形式,雖然有,但是直接應(yīng)用的話,對(duì)于還在鼠標(biāo)時(shí)代的桌面來(lái)說(shuō),反而提供了很差的用戶體驗(yàn)。

***是鼠標(biāo)區(qū)域的差異:

在桌面上,由于操作的不同,鼠標(biāo)會(huì)變換形狀,提示用戶當(dāng)前操作的狀態(tài),可是在觸摸屏設(shè)備上,就是畫(huà)蛇添足了,這是非常細(xì)節(jié)的地方,但是越細(xì)節(jié)的地方才能更加體會(huì)出編寫(xiě)桌面軟件和移動(dòng)設(shè)備軟件的不同。

通過(guò)這些簡(jiǎn)單的分析,就應(yīng)該認(rèn)識(shí)到Native Quick Widgets的意義,雖然只是簡(jiǎn)單地引用了Qt原生部件,但是這個(gè)實(shí)現(xiàn)幫助使用QML開(kāi)發(fā)人員省去了自己實(shí)現(xiàn)這些功能點(diǎn)的過(guò)程,節(jié)省了寶貴的開(kāi)發(fā)時(shí)間。

再次表達(dá)出對(duì)開(kāi)源者的尊敬,正是接近無(wú)限的開(kāi)源的代碼,才鑄就了ios,android,meego,如果沒(méi)有開(kāi)源,這些為人們生活提供巨大幫助和快樂(lè)的系統(tǒng)將不會(huì)出現(xiàn)。

同時(shí)也有由于Qt的存在,我們節(jié)省了造輪子的過(guò)程,才能快速地編寫(xiě)出軟件,滿足用戶多變的需求。

【編輯推薦】

  1. QML教程:Qt-Quick六大開(kāi)源組件
  2. QML教程:構(gòu)建和安裝QtComponents
  3. QML教程:Qtmediahub項(xiàng)目概述
責(zé)任編輯:佚名 來(lái)源: cuteqt
相關(guān)推薦

2011-06-10 11:05:05

Qt Quick QML

2011-06-20 13:23:03

Qt Quick QML

2011-03-11 14:43:41

Qt-QuickQML

2011-06-24 17:22:29

Qt Quick QML

2011-08-30 15:32:08

QtQuickQML

2011-03-21 17:06:31

QtmediahubQMLQt

2011-03-14 13:07:18

QMLQt

2011-08-30 15:49:03

QtQuick

2011-06-16 09:28:14

Qt QML 教程

2011-06-16 09:40:53

QML 教程

2011-06-16 09:53:25

Qt QML 教程

2011-09-09 14:09:17

Android Wid

2011-09-09 13:59:17

Android wid

2011-09-09 13:47:48

Android Wid

2011-06-10 11:24:08

Qt Quick Designer

2018-08-16 15:11:47

Code ReviewPPT代碼

2010-05-23 10:29:29

Widget開(kāi)發(fā)

2009-03-12 08:34:54

2021-03-03 07:28:58

ReviewAuthor代碼

2011-07-01 14:39:08

Qt Quick
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)