青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

[教程] QML基本語法 [轉]

Posted on 2011-07-06 22:03 RTY 閱讀(1477) 評論(0)  編輯 收藏 引用 所屬分類: Qt 、轉載隨筆



QML是什么?

QML 是一中聲明式語言,用來描述應用程序接口的――是什么樣,有怎樣的行為。在QML中,一個用戶接口被指定為帶有屬性的對象是。

這個介紹主要面向只有很少或者沒有編碼經驗的人。在QML中,JavaScript作為一種腳本語言被使用。因此在深入學習QML之前,也許你會想要去學一些關于JavaScript的知識(JavaScript: The Definitive Guide)。另外,對像HTML和CSS這樣的網頁技術有一些基礎的了解也是相當有幫助的,但這些都不是必須的。

QML 的基本語法
QML看起來像這樣
  1. import Qt 4.7
  2. Rectangle {
  3.      width: 200
  4.      height: 200
  5.      color: "blue"

  6.      Image {
  7.          source: "pics/logo.png"
  8.          anchors.centerIn: parent
  9.      }
  10. }
復制代碼

對象是通過類型而直接被指定的,緊隨其后的是一對大括號。對象類型總是以大寫字母開頭。在上面的例子中,存在兩個對象Rectangle和Image。在大括號之間,我們可以指定對象的相關信息,例如它的屬性。屬性是通過“property: value”這樣的方式被呈現的。在上面的例子中,我們可以看到Image擁有一個屬性叫做source,它被分配了一個值叫做"pics/logo.png"。屬性和值被冒號分隔。

屬性可以被一行行指定:

  1. Rectangle {
  2.      width: 100
  3.      height: 100
  4. }
復制代碼

同時也可以在一個單行上指定多個屬性:

  1. Rectangle { width: 100; height: 100 }
復制代碼

當多個property/value對被指定在一個單行上時,他們需要通過分號來分隔。

import聲明是為了導入包含所有標準的QML元素的Qt模塊。沒有這個導入聲明,Rectangle和Image元素都將不能被使用。

表達式

除了直接給屬性指定值之外,你也可以像在JavaScript中一樣通過表達式來指定。

  1. Rotation {
  2.      angle: 360 * 3
  3. }
復制代碼

這些表達式可以包含其他對象和屬性,這樣子的操作將會產生一個綁定關系,當這個表達式的值發生改變時,已經通過表達式指定了的屬性的值也會自動更新到那個值。

  1. Item {
  2.      Text {
  3.          id: text1
  4.          text: "Hello World"
  5.      }
  6.      Text {
  7.          id: text2
  8.          text: text1.text
  9.      }
  10. }
復制代碼

在上面的這個例子中,text2對象將會顯示和text1一樣的文字.如果text1改變了,text2也會自動變化為相同的值。

在引用其他對象時,可以通過對象的id 值,來進行引用。

QML注釋

QML中的注釋方式和Javascript 的相同。

單行注釋使用//;

多行注釋使用 /* … */ 。

  1. Text {
  2.      text: "Hello world!"/*print text*/
  3.      //opacity: 0.5
  4. }
復制代碼
屬性
屬性命名

屬性通常以小寫字符開頭(附加屬性除外)

屬性類型

QML支持多種屬性(具體參看QML Basic Types)?;镜膶傩园?int, real, bool, string, color和lists。

  1. Item {
  2.      x: 10.5             // a 'real' property
  3.      ...
  4.      state: "details"    // a 'string' property
  5.      focus: true         // a 'bool' property
  6. }
復制代碼

QML的屬性是屬于類型安全的,也就是說屬性的類型必須和所分配的值是相同的。例如,Item的x屬性是一個real,如果你想要給他分配一個string值,就會得到一個錯誤。

  1. Item {
  2.      x: "hello"  // illegal!
  3. }
復制代碼
id屬性

每個對象都可以指定一個專門的屬性叫做id,這個屬性的值必須是唯一的。在同一個QML文檔中不能有相同的id值。通過指定一個唯一可用的id,對象就可以被其他對象和腳本引用。

  1. Item {
  2.      Rectangle {
  3.          id: myRect
  4.          width: 100
  5.          height: 100
  6.      }
  7.      Rectangle {
  8.          width: myRect.width
  9.          height: 200
  10.      }
  11. }
復制代碼

ps:id必須以小寫字母或者下劃線開頭,并且不能包含除字母、數字和下劃線以外的其他字符。

List屬性

List屬性看起來像這樣

  1. Item {
  2.      children: [
  3.          Image {},
  4.          Text {}
  5.      ]
  6. }
復制代碼

list有包含在方括號,list中的屬性以逗號來分隔。如果只有一個屬性,可以省略方括號。

  1. Image {
  2.      children: Rectangle {}
  3. }
復制代碼
缺省屬性

每個對象類型可以指定一個list或者或者對象屬性作為缺省屬性。如果一個屬性已經被聲明為缺省屬性,那么該屬性的標簽就可以被省略。

示例代碼
  1. State {
  2.      changes: [
  3.          PropertyChanges {},
  4.          PropertyChanges {}
  5.      ]
  6. }
復制代碼
可以被簡化為
  1. State {
  2.      PropertyChanges {}
  3.      PropertyChanges {}
  4. }
復制代碼
因為changes是State類型的缺省屬性。
組屬性
在一些示例中屬性會構成一個邏輯上的小組,并且通過點(“.”)或者組標記去使用它。
組屬性可以被寫成以下形式:
  1. Text {
  2.      font.pixelSize: 12
  3.      font.bold: true
  4. }
復制代碼
或者
  1. Text {
  2.      font { pixelSize: 12; bold: true }
  3. }
復制代碼
附加屬性

附加屬性的意思就是通過一些對象附加一些屬性到另一個對象上。附加屬性的格式如Type.property ,在這里Type是這個附加屬性元素的類型。

  1. Component {
  2.      id: myDelegate
  3.      Text {
  4.          text: "Hello"
  5.          color: ListView.isCurrentItem ? "red" : "blue"
  6.      }
  7. }
  8. ListView {
  9.      delegate: myDelegate
  10. }
復制代碼

ListView元素附加ListView.isCurrentItem這個屬性到它創建的每一個對象中。

另一個附加屬性的例子是Keys元素通過附加屬性來處理任何可見Item的key press事件,例如:

  1. Item {
  2.      focus: true
  3.      Keys.onSelectPressed: console.log("Selected")
  4. }
復制代碼
信號處理器

信號處理器允許通過事件來響應動作。舉個例子來說,MouseArea元素擁有信號處理器來處理鼠標press、release和click:

  1. MouseArea {
  2.      onPressed: console.log("mouse button pressed")
  3. }
復制代碼

所有的信號處理器都是以“on”開頭的。

一些信號處理器還包含有選項參數,例如MouseArea onPressed這個信號處理器就有mouse這個參數:

  1. MouseArea {
  2.      acceptedButtons: Qt.LeftButton | Qt.RightButton
  3.      onPressed: if (mouse.button == Qt.RightButton) console.log("Right mouse button pressed")
  4. }
復制代碼

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            曰韩精品一区二区| 亚洲另类在线视频| 亚洲精品影视在线观看| 久久久久.com| 欧美一区二区三区在| 香蕉视频成人在线观看| 国产精品免费视频观看| 亚洲一区视频在线| 亚洲欧美综合国产精品一区| 精品动漫3d一区二区三区| 欧美福利视频网站| 国产精品v片在线观看不卡| 久久国产精品第一页| 久久综合久久久| 中文日韩欧美| 久久国产手机看片| 一区二区三区久久| 亚洲欧美日韩精品久久亚洲区| 亚洲第一区在线| 中文久久精品| 亚洲精品乱码久久久久久日本蜜臀 | 伊人久久大香线蕉综合热线| 亚洲国产精品悠悠久久琪琪| 国产精品不卡在线| 老司机67194精品线观看| 欧美视频中文字幕在线| 欧美电影免费观看高清| 国产精品永久在线| 亚洲精品日韩在线| 精品动漫3d一区二区三区免费| 一本一本大道香蕉久在线精品| 91久久极品少妇xxxxⅹ软件| 欧美一区二区三区免费视| 亚洲欧美精品在线| 欧美精品在线观看| 亚洲国产成人tv| 红桃视频亚洲| 午夜视黄欧洲亚洲| 欧美亚洲一区二区在线| 欧美婷婷在线| 日韩一级视频免费观看在线| 亚洲精品影院| 欧美激情一区| 亚洲精品在线免费| 亚洲伦理精品| 欧美激情欧美狂野欧美精品| 亚洲高清网站| 99在线精品视频| 欧美日韩国产黄| 亚洲精品乱码久久久久久日本蜜臀 | 国产一区视频观看| 久久综合婷婷| 国产一区二区久久精品| 亚洲最新合集| 亚洲理论在线观看| 久久久久久亚洲综合影院红桃| 午夜视频一区二区| 欧美日韩中文另类| 久久久久久久久久久成人| 欧美日本三级| 欧美激情中文字幕乱码免费| 欧美日韩国产在线| 亚洲国产精品久久久久秋霞不卡| 亚洲午夜一区二区三区| 亚洲精品一区二区三区av| 久久久精彩视频| 久久精品国亚洲| 国产美女高潮久久白浆| 亚洲深夜福利网站| 亚洲第一中文字幕| 欧美在线观看视频在线| 久久精品国产亚洲一区二区| 国产精品青草久久| 亚洲图片欧美日产| 性欧美18~19sex高清播放| 国产精品久久久久久久久动漫| 9i看片成人免费高清| 亚洲视频第一页| 欧美小视频在线| 亚洲视频综合| 欧美一区永久视频免费观看| 国产欧美日韩视频| 99视频一区| 国产在线欧美日韩| 免费日韩成人| 亚洲美女电影在线| 亚洲一区二区在线视频| 国产精品美女久久久久久久 | 久久女同精品一区二区| 欧美11—12娇小xxxx| 亚洲国产高清一区| 欧美成人午夜影院| 亚洲免费av片| 亚洲欧美日韩精品在线| 亚洲成色www久久网站| 欧美性片在线观看| 久久九九全国免费精品观看| 一本色道久久综合亚洲精品婷婷 | 国产精品久久久久久久久免费桃花| 欧美亚洲免费在线| 亚洲国产高清自拍| 欧美一区二区三区日韩视频| 亚洲欧洲精品一区二区三区| 国产精品久久久一区二区| 久久午夜电影| 亚洲女爱视频在线| 亚洲国产精品一区| 欧美久久精品午夜青青大伊人| 狠狠色狠狠色综合日日91app| 亚洲色图自拍| 一区二区三区日韩在线观看| 久久米奇亚洲| 国产乱码精品| 一区二区动漫| 欧美一区二区三区视频| 亚洲人被黑人高潮完整版| 久久激情久久| 亚洲欧美日韩中文播放| 久久精品国产视频| 亚洲精品国精品久久99热一| 国产精品美女久久久久久免费 | 国产在线拍偷自揄拍精品| 亚洲精品免费在线| 久热爱精品视频线路一| 亚洲一区二区在线视频| 欧美日韩中文字幕综合视频| 亚洲精品之草原avav久久| 久久亚洲精选| 久久久免费观看视频| 在线免费观看一区二区三区| 欧美亚洲专区| 蜜桃av久久久亚洲精品| 亚洲乱码国产乱码精品精| 国产精品视频一| 久久视频精品在线| 99ri日韩精品视频| 老鸭窝亚洲一区二区三区| 亚洲一区国产精品| 国产精品福利久久久| 欧美日韩国产精品一区| 久久久久久久久久久久久9999| 国产欧美一区二区三区国产幕精品 | 亚洲欧美精品一区| 国产精品都在这里| 欧美在线视频在线播放完整版免费观看| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩中文字幕在线| 一区二区三区回区在观看免费视频| 亚洲综合色自拍一区| 国产精品一区二区在线观看| 久久国产精品久久久| 亚洲欧美日韩天堂| 国产日韩欧美在线一区| 久久久精品午夜少妇| 亚洲理论在线| 国内精品美女在线观看| 日韩视频免费观看高清在线视频 | 亚洲精品中文字幕有码专区| 欧美在线视频免费观看| 国产午夜精品一区理论片飘花| 欧美在线观看一区二区| 亚洲福利精品| 男女视频一区二区| 欧美岛国在线观看| 亚洲夜间福利| 一区二区三区日韩精品| 在线视频欧美日韩| 99国产精品久久久| 欧美日韩免费观看中文| 欧美一区二区三区婷婷月色 | 夜夜爽www精品| 久久精品国产99精品国产亚洲性色| 午夜精品一区二区在线观看 | 欧美看片网站| avtt综合网| 欧美日韩综合不卡| 亚洲精品国产精品国自产观看浪潮 | 欧美日韩亚洲综合一区| 妖精视频成人观看www| 欧美专区在线| 激情成人在线视频| 亚洲人体1000| 另类专区欧美制服同性| 在线免费观看日本欧美| 在线精品视频一区二区三四| 国产精品久久久久久久久搜平片 | 欧美日韩国产首页在线观看| 亚洲私人影院在线观看| 国产香蕉97碰碰久久人人| 亚洲欧美日韩精品久久亚洲区| 国产欧美视频在线观看| 在线亚洲自拍| 久久视频在线看| 久久久久久婷| 亚洲欧洲日本在线| 亚洲精品美女在线观看播放| 欧美日本国产| 国产精品蜜臀在线观看| 亚洲欧美成人| 久久久噜噜噜久噜久久|