成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

新手必學 QML入門教程 (2)

移動開發
QML是Qt推出的Qt Quick技術的一部分,是一種新增的簡便易學的語言。 QML是一種陳述性語言,用來描述一個程序的用戶界面:無論是什么樣子,以及它如何表現。還是接著上一篇文章繼續介紹。

繼續介紹QML入門教程。QML是一種描訴性的腳本語言,文件格式以.qml結尾。語法格式非常像CSS(參考后文具體例子),但又支持javacript形式的編程控制。

上一篇文章里我們使用了最基礎的QML類型實現了文字Hello,World的顯示。這篇文章中將會增加顏色選項面板,用戶可以給Hello,World設置不同的顏色,如下圖顯示 :

新手必學 QML入門教程 (2)

QML組件

從圖中可以看到選項面板由6個顏色小塊組成,它們唯一的區別就是顏色不一樣。那么我們就可以用組件(Component)來實現一個顏色塊,然后在需要的時候使用這個組件就可以了。組件其實和其它編程語言中的宏,函數,類,結構體等功能差不多,就是代碼復用。作為程序員,我知道你懂的。

組件由一個單獨的QML文件名組成,文件名總是以大寫字母開頭,要使用該組件的時候直接使用該文件名就可以了。關于如何定義自己的組件,請訪問Defining new Components。我們為一個顏色塊定義了一個Cell.qml文件,然后使用Cell作為一個去訪問它。

Cell.qml的內容

  1. import Qt 4.7  
  2. Item {  
  3.     id: container  
  4.     property alias cellColor: rectangle.color  
  5.     signal clicked(color cellColor)  
  6.     width: 40; height: 25  
  7.     Rectangle {  
  8.         id: rectangle  
  9.         border.color: "white"  
  10.         anchors.fill: parent  
  11.     }  
  12.     MouseArea {  
  13.         anchors.fill: parent  
  14.         onClicked: container.clicked(container.cellColor)  
  15.     }  

挨個看代碼~

  1. Item {  
  2. id: container  
  3. property alias cellColor: rectangle.color  
  4. signal clicked(color cellColor)  
  5. width: 40; height: 25 

Item是最常使用的QML類型,一般用作其它類型的容器,可以理解成最頂級的父類,功能類似于QtGui中的QWidget。用一個屬性別名訪問其內嵌對象rectangle的color屬性。在其它文件中可以用Cell對象的cellColor獲得rectangle的color值。

signal clicked(color cellColor)則為對象定義了一個信號,在代碼的其它部分可以發出這個信號。

  1. Rectangle {  
  2. id: rectangle  
  3. border.color: “white”  
  4. anchors.fill: parent  

這一部分沒有特別好說的,在Item中內嵌了一個id為rectangle白邊框的矩形區域,大小占滿整個Item。

  1. MouseArea {  
  2. anchors.fill: parent  
  3. onClicked: container.clicked(container.cellColor)  

MouseArea則為Item增加了一塊鼠標響應區,看它的anchors知道,在整個Item區域內都是鼠標活動區,都能偵聽到鼠標事件。onClicked那一行則相當于為鼠標單擊事件增加了一個處理行為,這里是發出了一個clicked()的信號。這個信號正是我們在Item里定義的那個signal。

Cell.qml寫完了,再來看看程序的主文件。

main.qml的內容

  1. import Qt 4.7  
  2. Rectangle {  
  3.      id: page  
  4.      width: 500; height: 200  
  5.      color: "lightgray"  
  6.      Text {  
  7.          id: helloText  
  8.          text: "Hello world!"  
  9.          y: 30  
  10.          anchors.horizontalCenter: page.horizontalCenter  
  11.          font.pointSize: 24; font.bold: true  
  12.      }  
  13.     Grid {  
  14.          id: colorPicker  
  15.          x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4  
  16.          rows: 2; columns: 3; spacing: 3  
  17.          Cell { cellColor: "red"; onClicked: helloText.color = cellColor }  
  18.          Cell { cellColor: "green"; onClicked: helloText.color = cellColor }  
  19.          Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }  
  20.          Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }  
  21.          Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }  
  22.          Cell { cellColor: "black"; onClicked: helloText.color = cellColor }  
  23.      }  
  24.  } 

這里在原來的基礎上增加了一個Grid網格。x坐標是4,底部挨著page的底部,所以我們看到的是在左下角。

新增的6個Cell,名字和Cell.qml是一樣的。通過cellColor屬性將顏色傳給了每個顏色塊。

當Cell接收到onClicked事件的時候,關聯的代碼回去修改Hello,World上的顏色。細心的朋友可能會注意到Cell只是定義了clicked()的信號,并沒有定義onClicked()啊,是的這就是Component的語法規則了。如果你在Cell.qml里定義的是plicked(),那么你在main.qml中引用的時候就該用onPlicked()了。

好了,代碼也不少了,隨便改動改動,你會了解更多QML的秘密的。

小結:QML入門教程,已經介紹兩篇了,不知道你了解的怎么樣了,如果還想繼續深入的話,那么就看下一篇關于QML的介紹吧。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-16 09:53:25

Qt QML 教程

2011-06-16 09:28:14

Qt QML 教程

2010-07-27 15:53:15

2010-08-02 09:36:22

Flex

2011-07-29 11:28:58

iPhone開發

2011-06-23 13:40:22

2011-09-07 11:13:27

無線路由器無線路由器設置

2023-11-29 07:30:08

Python用戶界面

2009-07-08 15:12:48

Java Servle

2014-05-26 15:35:55

Web組件Web Compone

2013-08-29 14:12:52

Storm分布式實時計算

2010-08-03 13:06:15

Flex Builde

2011-06-16 11:04:07

Qt

2011-09-02 10:59:10

jQuery Mobi

2013-06-24 13:38:34

HTML5 DataList

2018-03-22 14:59:13

Docker入門容器

2010-07-20 16:19:54

Perl

2010-06-18 16:56:50

UML建模語言

2010-05-12 17:41:11

Subversion教

2010-05-21 12:50:45

Subversion快
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久国产一区二区三区 | 亚洲精选一区二区 | 成人在线欧美 | 精品国产一区二区三区久久 | 成人国产精品久久久 | 亚洲高清视频在线 | 精品一区二区视频 | 亚洲高清av在线 | 中文字幕第一页在线 | 国产成人免费观看 | 男女羞羞的网站 | 欧美一级二级在线观看 | 亚洲欧美综合 | 夜夜草| 亚洲一区二区欧美 | 欧美一级网站 | 欧美精品在线播放 | 91国内精品久久 | 久久丝袜 | 日韩av视屏 | 天天躁日日躁狠狠的躁天龙影院 | 午夜免费视频 | 亚洲一区中文 | 国产黄色av网站 | 亚洲久久在线 | 久久久久久久久久久久久久久久久久久久 | 亚洲天天干| 午夜私人影院在线观看 | 麻豆久久 | 欧美色综合天天久久综合精品 | 99精品久久 | 国产精品久久在线 | 成年免费在线观看 | 中文字幕国产 | 国产精品久久久 | 九九久久这里只有精品 | 亚洲视频www | 毛片一区二区三区 | 久久亚洲春色中文字幕久久久 | 午夜av成人| 久久一及片 |