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

剖析 QML 視圖 簡單易學

移動開發(fā)
本文介紹的是QML視圖,如果你了解QML,那么本文就好理解了,不了解的話,那么本文將會給你詳細的介紹!

QML視圖是本文要介紹的內容,在QML中提供了三種視圖方式:ListView列表視圖、GridView網格視圖和PathView路徑視圖。這三種視圖都是繼承自Flickable ,所以它們都有Flickable效果。下面我們簡單介紹一下ListView和PathView。

一、ListView列表視圖。

如果你了解Qt的模型視圖結構,那么這一節(jié)的內容就很好理解了,如果你沒接觸過,也沒關系,因為它其實很簡單。在Qt中我們要想利用視圖顯示一些數(shù)據,并不是將這些數(shù)據直接放到視圖中的,因為視圖只管顯示,它不存儲數(shù)據。我們的數(shù)據要放在數(shù)據模型中。但是數(shù)據模型中只是存放數(shù)據,它并不涉及數(shù)據的顯示方式。所以,我們還要用一個叫做代理的東東來設置數(shù)據模型中的數(shù)據怎樣在視圖中顯示。那么就構成了下面的關系。

 QML 視圖

我們先看下面的例子:

1、新建一個Qt QML Application工程,命名為“myView”。

2、我們更改代碼如下:

  1. import Qt 4.6  
  2. Rectangle {  
  3. width:200;height:200  
  4. ListModel{  //數(shù)據模型  
  5. id:listModel  
  6. ListElement{name:”Tom”;number:”001″}  
  7. ListElement{name:”John”;number:”002″}  
  8. ListElement{name:”Sum”;number:”003″}  
  9. }  
  10. Component{     //代理  
  11. id:delegate  
  12. Item{ id:wrapper; width:200; height:40  
  13. Column{  
  14. x:5; y:5  
  15. Text{text:”<b>Name:</b>”+name}  
  16. Text{text:”<b>Number:</b>”+number}  
  17. }  
  18. }  
  19. }  
  20. Component{   //高亮條  
  21. id:highlight  
  22. Rectangle{color:”lightsteelblue”;radius:5}  
  23. }  
  24. ListView{  //視圖  
  25. width:parent.width; height:parent.height  
  26. model:listModel  //關聯(lián)數(shù)據模型  
  27. delegate:delegate  //關聯(lián)代理  
  28. highlight:highlight  //關聯(lián)高亮條  
  29. focus:true  //可以獲得焦點,這樣就可以響應鍵盤了  
  30. }  

運行效果如下:

 QML 視圖

我們可以拖動整個列表,而且可以使用鍵盤的方向鍵來選擇列表中的項目。

在這個程序中,我們先設置了數(shù)據模型,在其中加入了一些數(shù)據。然后設置了代理,在代理中我們設置了要怎樣顯示我們的數(shù)據。***,我們在視圖中關聯(lián)了數(shù)據模型和代理,將數(shù)據顯示出來了。這里為了達到更好的顯示效果,我們使用了一個高亮條。其中的代理和高亮條都可以使用Component{}組件來實現(xiàn)。

3.我們可以對視圖做一些設置。

我們可以設置keyNavigationWraps:true 使到達***一個項目后重新返回***個項目。

我們可以設置orientation:ListView.Horizontal使列表水平顯示。這時你拖動列表,發(fā)現(xiàn)了吧,它可以自動移動到下一條,這就是Flickable的作用。默認的是ListView.Vertical豎直顯示。

#p#

二、PathView路徑視圖

1.什么是路徑視圖,我們先來看一個例子。

  1. Rectangle {  
  2. width:300;height:300;  
  3. ListModel{  //數(shù)據模型  
  4. id:listModel  
  5. ListElement{icon:”01.gif”}  
  6. ListElement{icon:”02.gif”}  
  7. ListElement{icon:”03.gif”}  
  8. ListElement{icon:”04.gif”}  
  9. }  
  10. Component{     //代理  
  11. id:delegate  
  12. Item{ id:wrapper; width:50; height:50  
  13. Column{  
  14. Image {source:icon;width:50;height:50}  
  15. }  
  16. }  
  17. }  
  18. PathView{  //路徑視圖  
  19. anchors.fill:parent; model:listModel; delegate:delegate  
  20. path:Path{startX:120;startY:200  
  21. PathQuad{x:120;y:25;controlX:260;controlY:125}  
  22. PathQuad{x:120;y:200;controlX:-20;controlY:125}  
  23. }  
  24. }  

效果如下:

 QML 視圖

你可以拖動一個圖標查看效果,是的,所有圖標的轉起來了。這就是路徑視圖。我們在程序中,設置了一個路徑,如上面的:

  1. path:Path{startX:120;startY:200  
  2. PathQuad{x:120;y:25;controlX:260;controlY:125}  
  3. PathQuad{x:120;y:200;controlX:-20;controlY:125}  

它們確定了一個橢圓形,所有的項目都在這個路徑上,當拖動一個項目,所有的項目都會在路徑上移動。

2、關于Path

在QML中提供了三種Path。PathLine直線,PathQuad二次貝塞爾曲線,PathCubic三次貝塞爾曲線。你可以在幫助中查看它們的使用,這里不再進行過多介紹。

3、路徑屬性。

我們可以通過路徑屬性PathAttribute ,來設置不同路徑上不同位置的項目。

例如我們更改上面的程序:

  1. Component{     //代理  
  2. id:delegate  
  3. Item{ id:wrapper; width:50; height:50  
  4. scale:PathView.scale; opacity:PathView.opacity  
  5. Column{  
  6. Image {source:icon;width:50;height:50}  
  7. }  
  8. }  
  9. }  
  10. PathView{  
  11. anchors.fill:parent; model:listModel; delegate:delegate  
  12. path:Path{startX:120;startY:200  
  13. PathAttribute{name:”scale”;value:1.0}  
  14. PathAttribute{name:”opacity”;value:1.0}  
  15. PathQuad{x:120;y:25;controlX:260;controlY:125}  
  16. PathAttribute{name:”scale”;value:0.5}  
  17. PathAttribute{name:”opacity”;value:0.5}  
  18. PathQuad{x:120;y:200;controlX:-20;controlY:125}  
  19. }  
  20. }  

效果如下:

 QML 視圖

我們在Path中設置了路徑屬性,使得在不同點的圖片具有不同的效果,這里設置了縮放和不透明度兩個屬性。我們只需設置開始點和結束點兩個點的屬性,這樣就會在整個路徑上進行線性插值。這一節(jié)介紹了兩個視圖,還有一個GridView網格視圖,它的操作是相似的,在這里就不再進行介紹了。

本文章原創(chuàng)于 www.yafeilinux.com

小結:剖析 QML 視圖的內容介紹完了,希望本篇文章對你有所幫助!更多內容請參考編輯推薦!

責任編輯:zhaolei 來源: 互聯(lián)網
相關推薦

2010-02-01 14:37:44

PythonWin模塊

2011-06-10 11:05:05

Qt Quick QML

2010-05-18 18:09:41

IIS Lockdow

2010-04-15 11:38:23

配置無線局域網

2010-05-20 16:09:07

優(yōu)化IIS

2022-09-14 10:50:36

npm代碼前端

2010-06-11 16:27:47

UML視圖

2010-07-05 15:26:03

UML九種視圖

2010-02-24 17:54:02

2010-03-05 09:49:34

Python文件操作

2009-08-27 16:29:18

C#動態(tài)編譯

2009-11-17 16:47:09

Oracle物化視圖日

2009-10-19 18:01:35

Linux磁盤分區(qū)

2009-08-28 11:16:51

C#日期型數(shù)

2010-05-13 15:38:19

Subversion

2013-06-14 13:50:28

iOS開發(fā)移動開發(fā)警告視圖

2011-09-04 09:54:46

筆記本技巧

2019-09-11 09:05:18

Linux命令

2010-05-14 14:01:33

Subversion合

2017-03-16 17:40:05

Linux架構運維
點贊
收藏

51CTO技術棧公眾號