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

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

[教程] QML基本語法 [轉(zhuǎn)]

Posted on 2011-07-06 22:03 RTY 閱讀(1479) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Qt轉(zhuǎn)載隨筆



QML是什么?

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

這個(gè)介紹主要面向只有很少或者沒有編碼經(jīng)驗(yàn)的人。在QML中,JavaScript作為一種腳本語言被使用。因此在深入學(xué)習(xí)QML之前,也許你會(huì)想要去學(xué)一些關(guān)于JavaScript的知識(shí)(JavaScript: The Definitive Guide)。另外,對(duì)像HTML和CSS這樣的網(wǎng)頁技術(shù)有一些基礎(chǔ)的了解也是相當(dāng)有幫助的,但這些都不是必須的。

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. }
復(fù)制代碼

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

屬性可以被一行行指定:

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

同時(shí)也可以在一個(gè)單行上指定多個(gè)屬性:

  1. Rectangle { width: 100; height: 100 }
復(fù)制代碼

當(dāng)多個(gè)property/value對(duì)被指定在一個(gè)單行上時(shí),他們需要通過分號(hào)來分隔。

import聲明是為了導(dǎo)入包含所有標(biāo)準(zhǔn)的QML元素的Qt模塊。沒有這個(gè)導(dǎo)入聲明,Rectangle和Image元素都將不能被使用。

表達(dá)式

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

  1. Rotation {
  2.      angle: 360 * 3
  3. }
復(fù)制代碼

這些表達(dá)式可以包含其他對(duì)象和屬性,這樣子的操作將會(huì)產(chǎn)生一個(gè)綁定關(guān)系,當(dāng)這個(gè)表達(dá)式的值發(fā)生改變時(shí),已經(jīng)通過表達(dá)式指定了的屬性的值也會(huì)自動(dòng)更新到那個(gè)值。

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

在上面的這個(gè)例子中,text2對(duì)象將會(huì)顯示和text1一樣的文字.如果text1改變了,text2也會(huì)自動(dòng)變化為相同的值。

在引用其他對(duì)象時(shí),可以通過對(duì)象的id 值,來進(jìn)行引用。

QML注釋

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

單行注釋使用//;

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

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

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

屬性類型

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. }
復(fù)制代碼

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

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

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

  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. }
復(fù)制代碼

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

List屬性

List屬性看起來像這樣

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

list有包含在方括號(hào),list中的屬性以逗號(hào)來分隔。如果只有一個(gè)屬性,可以省略方括號(hào)。

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

每個(gè)對(duì)象類型可以指定一個(gè)list或者或者對(duì)象屬性作為缺省屬性。如果一個(gè)屬性已經(jīng)被聲明為缺省屬性,那么該屬性的標(biāo)簽就可以被省略。

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

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

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

ListView元素附加ListView.isCurrentItem這個(gè)屬性到它創(chuàng)建的每一個(gè)對(duì)象中。

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

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

信號(hào)處理器允許通過事件來響應(yīng)動(dòng)作。舉個(gè)例子來說,MouseArea元素?fù)碛行盘?hào)處理器來處理鼠標(biāo)press、release和click:

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

所有的信號(hào)處理器都是以“on”開頭的。

一些信號(hào)處理器還包含有選項(xiàng)參數(shù),例如MouseArea onPressed這個(gè)信號(hào)處理器就有mouse這個(gè)參數(shù):

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产专区一区| 欧美影视一区| 免费看av成人| 亚洲午夜羞羞片| 欧美激情一区| 亚洲电影网站| 久久亚洲综合色一区二区三区| 亚洲一区二区黄色| 欧美日韩八区| 亚洲乱码久久| 亚洲第一页中文字幕| 久久精品99国产精品日本| 国产精品女同互慰在线看| 一区二区三区精品视频| 亚洲国产精品成人| 美女视频黄 久久| 伊人狠狠色j香婷婷综合| 久久激情五月激情| 亚洲欧美日韩在线| 国产精品亚洲аv天堂网| 亚洲一区www| 一区二区毛片| 欧美亚一区二区| 中日韩美女免费视频网站在线观看| 亚洲第一在线| 欧美不卡高清| 亚洲美女网站| 亚洲人成人一区二区三区| 欧美成人在线免费观看| 亚洲欧洲午夜| 亚洲国产裸拍裸体视频在线观看乱了中文 | 免费91麻豆精品国产自产在线观看| 国内成+人亚洲| 久久亚洲春色中文字幕| 久久精品国产第一区二区三区| 国产在线不卡精品| 久久久精品免费视频| 久久爱www.| 精品成人一区二区| 欧美www在线| 你懂的成人av| 日韩亚洲欧美高清| 夜夜嗨av一区二区三区| 国产精品萝li| 久久国产精品久久久| 久久精品30| 亚洲高清自拍| 亚洲人成网站777色婷婷| 欧美美女bbbb| 亚洲欧美日韩中文视频| 亚洲欧美日韩精品久久| 国产在线欧美| 欧美高清在线一区| 欧美精品久久久久a| 亚洲一区二区三区四区五区黄| 亚洲图中文字幕| 国产主播一区二区三区| 欧美大胆a视频| 欧美破处大片在线视频| 亚洲欧美综合网| 久久国产精品一区二区| 亚洲激情在线播放| 亚洲精品国产精品国自产观看浪潮| 欧美性开放视频| 久久国产精品一区二区三区四区| 久久久国产一区二区三区| 最新日韩欧美| 亚洲色诱最新| 一区二区亚洲精品国产| 91久久久久久国产精品| 国产精品久久久99| 久久综合伊人| 欧美日韩亚洲国产精品| 久久精品视频在线播放| 欧美h视频在线| 香蕉久久夜色精品国产使用方法| 久久精品国产欧美激情| 99热免费精品| 亚洲欧美日韩精品综合在线观看| 在线成人h网| 一本一本久久a久久精品牛牛影视| 国产日韩欧美黄色| 亚洲国产影院| 国产欧美一级| 亚洲人成网在线播放| 国产区亚洲区欧美区| 亚洲国产成人精品视频| 国产九九精品视频| 亚洲丰满在线| 国产亚洲亚洲| 亚洲精品视频在线看| 国产在线精品一区二区中文| 亚洲精品一线二线三线无人区| 国产一区二区三区四区老人| 亚洲乱码国产乱码精品精天堂| 国产在线拍偷自揄拍精品| 99国产精品久久久久久久成人热| 黄色一区二区在线观看| 一区二区三区导航| 亚洲国产日本| 小嫩嫩精品导航| 亚洲视频1区2区| 久久综合中文字幕| 久久精品国产免费看久久精品| 欧美日韩精品二区第二页| 蜜桃av一区二区三区| 国产精品美女999| 亚洲人成网站影音先锋播放| 黄色亚洲网站| 亚洲自拍三区| 在线视频亚洲欧美| 久久综合一区二区三区| 欧美在线亚洲一区| 欧美午夜一区| 亚洲黄色av一区| 影音先锋在线一区| 亚洲欧美一区二区三区极速播放| 一区二区成人精品| 免费亚洲电影在线| 久久一本综合频道| 国产精品五月天| 99re热精品| 99v久久综合狠狠综合久久| 久久久免费精品视频| 久久国产一区| 国产欧美日本在线| 亚洲伊人色欲综合网| 制服诱惑一区二区| 欧美精品日韩综合在线| 亚洲第一久久影院| 亚洲成在线观看| 久久九九99| 久久久久国产精品午夜一区| 国产精品呻吟| 亚洲性夜色噜噜噜7777| 亚洲五月六月| 欧美午夜精品久久久久久孕妇| 亚洲欧洲综合另类| 亚洲精品综合久久中文字幕| 欧美不卡高清| 欧美高潮视频| 91久久精品国产91性色tv| 久久三级福利| 牛牛影视久久网| 亚洲福利视频三区| 久久免费黄色| 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲深夜影院| 欧美日韩亚洲一区二区三区在线观看| 亚洲国产专区| 一区二区三区欧美日韩| 欧美日本一区二区三区| 亚洲美女网站| 亚洲在线视频一区| 国产精品视频福利| 亚洲欧美日韩在线一区| 久久激情婷婷| 精品动漫av| 免费高清在线一区| 亚洲国产精品成人| 一区二区三区四区国产| 欧美日韩综合精品| 亚洲视频在线一区| 久久aⅴ国产欧美74aaa| 韩国一区电影| 免费观看成人| 亚洲精品国产系列| 亚洲欧美日韩一区二区在线| 国产嫩草一区二区三区在线观看| 欧美亚洲日本网站| 麻豆成人综合网| 亚洲人成毛片在线播放女女| 欧美日韩国产一级| 亚洲私人影院| 久久久精品日韩| 亚洲黄色尤物视频| 欧美日韩国产成人精品| 亚洲性色视频| 久久一区二区三区国产精品 | 亚洲高清激情| 欧美精品一区二| 亚洲在线成人| 久久阴道视频| av成人免费观看| 国产精品户外野外| 久久精品国产亚洲5555| 亚洲国产一区二区三区在线播| 亚洲伊人观看| 一区二区三区无毛| 欧美日韩国产一区二区| 午夜精品久久久久| 欧美激情中文字幕在线| 亚洲一区综合| 又紧又大又爽精品一区二区| 欧美日韩国产经典色站一区二区三区| 亚洲欧美激情诱惑| 亚洲高清不卡在线| 性娇小13――14欧美| 亚洲黄色免费网站| 国产精品久在线观看|