马侬骑士的个人主页

http://www.qtcn.org/bbs/u/169214  [收藏] [复制]

马侬骑士

  • 0

    关注

  • 1

    粉丝

  • 3

    访客

  • 等级:新手上路
  • 总积分:52
  • 保密,2016-01-15

最后登录:2020-01-26

更多资料

日志

QML中Default 属性学习

2016-07-10 12:09
Default 属性
在学习QML的过程中很容易忽略Default属性,因为这个概念很少有人捋它。但是,明白Default属性是很重要的。
首先先看一下在QML中的,一个完整属性的定义形式如下:
[default]property <propertyType> <propertyName>
default这个关键词是可以理解为默认属性,它被中括号括起来,说明是一个可选属性。由于它是QML中属性定义的一般形式,也体现为任何属性都可以定义为默认属性。(但是在一个QML对象中只能定义一个默认属性)。
默认属性的解释说明:
一个QML对象中仅能定义一个default(默认)属性。一个对象的默认属性,会将定义在定义在其中的对象自动分配给默认属性。
default 关键词将一个属性声明为一个默认属性. 例如, 一个文件名为MyLabel.qml的QML文档,声明了一个默认属性 someText:
//MyLabel.qml
  import QtQuick2.0
  Text {
      defaultproperty var someText
      text:"Hello, " + someText.text
  }
一个定义在MyLabel的对象,将自动将值分配给someText 属性, 例如:
MyLabel{
      Text {text: "world!" }
  }
直接分配属性也是一样的效果:
MyLabel{
      someText:Text { text: "world!" }
  }



例如:Item中的data属性
[default]data :list<Object>
它就是默认属性,因此直接在其中创建的对象会被自动分配给data属性。
由于default默认属性只能有一个,因此当在Item中声明一个新的default属性时,原来的default属性就是对外不可见了,但是这个属性还是存在的。

例如在如下例子,虽然单独的Text的默认属性也是data,但是在MyLabel.qml中的Text中定义了someText默认属性,因此说是在使用组件时,data默认属性就对外不可显示了,但是data属性还是存在并起作用的。
// MyLabel.qml
import QtQuick 2.0
Text {
    id:root
default property var someText
    text: "Hello, " + someText.text
    Rectangle{
      id:rec1
      anchors.fill: parent
      color: "red"
    }
}


再比如属性
Gradient 类型的只有一个属性
[default] stops : list<GradientStop>
是个默认属性,默认属性的类型是list<GradientStop>,因此在Gradient中只能声明GradientStop类型,否则会类型不匹配。
使用形式是:
Gradient {          GradientStop { position: 0.0; color: "red" }          GradientStop { position: 0.33; color: "yellow" }          GradientStop { position: 1.0; color: "green" }
      }
如果加入其它类型就会报错。
分类:QML|回复:0|浏览:652|全站可见|转载
 

下一篇:

上一篇:

Powered by phpwind v8.7 Certificate Copyright Time now is:03-29 15:45
©2005-2016 QTCN开发网 版权所有 Gzip disabled