QML Item及透明度

1.Item的方法

activeFocus : bool
这个属性表明当前的Item是否处于活动搞得焦点状态。,一个Item只有在处于焦点的状态或者是一个FocusScope中的一个元素下才能接收键盘输入。通常,当对某个item设置焦点以及对包含它的FocusScopes设置焦点时,activeFocus被置为真。

在下面的例子中,input元素将得到一个为真的activeFocus:

Rectangle {
     FocusScope {
         focus: true
         TextInput {
             id: input
             focus: true
         }
     }
 }

anchors.top : AnchorLine
anchors.bottom : AnchorLine
anchors.left : AnchorLine
anchors.right : AnchorLine
anchors.horizontalCenter : AnchorLine
anchors.verticalCenter : AnchorLine
anchors.baseline : AnchorLine
anchors.fill : Item
anchors.centerIn : Item
anchors.margins : real
anchors.topMargin : real
anchors.bottomMargin : real
anchors.leftMargin : real
anchors.rightMargin : real
anchors.horizontalCenterOffset : real
anchors.verticalCenterOffset : real
anchors.baselineOffset : real
这是一系列关于锚anchor的属性,用来定位这个Item的位置,在QML中,并没有全局的布局管理器存在,每个QML元素实际就是自我锚接在其他元素上,层层至上,形成一个完成的布局。
看看代码例子

Item {
     Image {
         id: pic
         // ...
     }
     Text {
         id: label
         anchors.horizontalCenter: pic.horizontalCenter
         anchors.top: pic.bottom
         anchors.topMargin: 5
         // ...
     }
 }

这个描述了一个文本元素和一个图像元素水平中心对齐,文本元素在图像元素下方,并且相距5个像素,效果如:
qml tutorial 3 pic1

Item {
     Image {
         id: pic
         // ...
     }
     Text {
         id: label
         anchors.left: pic.right
         anchors.leftMargin: 5
         // ...
     }
 }

而这个则描述的是文本元素在图像像素的右侧,并且相距5个像素,效果如:
qml tutorial 3 pic2

children : list<Item> 只读
resources : list<Object> 只读
children属性和resource属性都是只读属性,这代表你不能动态改变其值,children代表的所有可视子元素的队列,而resources代表当时所有不可见子元素的队列。在一般编写QML中,无需要引用这个属性定义,QML会自动分类帮助加入到这两个队列。但是如果有种需求,是将可见子元素设置为不可见,除了单独对其进行改变,还有就是加入到resources中,使其成为不可见的资源队列。
这个属性使用情况较少,但是一到遇到,就可以派生出巧妙的使用办法,可以在日后学到。

childrenRect.x : real
childrenRect.y : real
childrenRect.width : real
childrenRect.height : real
这几个childrenRect的属性集,通过这几个属性,我们可以拿到所有Item元素叠加产生的最小矩形的x坐标和y坐标,还有宽和高。

clip : bool
clip属性表明是否允许剪切,比如一个Item元素限定在另一个Item元素内,如果大小超越了Item元素,就可以使用属性价剪切掉超出的部分。

data : list<Object>
ddata一个只读属性,跟children和resources类似,他允许用户在定义元素时,不指明children和resources,他可以自动将可见的元素划入children队列,不可见的元素划入resources队列。
如代码端:

1
2
3
4
5
6
7
8
9
Item {
     children: [
         Text {},
         Rectangle {}
     ]
     resources: [
         Timer {}
     ]
 }

就可以用下面代码端代替了

1
2
3
4
5
Item {
     Text {}
     Rectangle {}
     Timer {}
 }

这正是上面描述的,我们无需特意进行children和resources队列加入,data这个属性本身就会在后台帮助我们处理。

focus : bool
focus属性是否获取焦点,如果为真,并且是FocusScope的子项,那么当FocusScope获取到焦点时候,这个项也就会获得焦点,如以下代码所示:

Rectangle {
     FocusScope {
         id: scope
         TextInput {
             id: input
             focus: true
         }
     }
 }

另一种情况,那就是不作为FocusScope的子Item,那么程序启动就会获得焦点,如以下代码所示:

1
2
3
4
5
6
Rectangle {
     TextInput {
         id: input
         focus: true
     }
 }

opacity : real
不透明度,这个属性是用来设置该item的不透明性的,它可以在0.0-1.0之间取值,0.0表示完全透明,1.o表示完全不透明,
默认值为1.0,即不透明。

parent : Item
parent属性是指该Item的父Item,如果本身就最高的Item,那parent属性自然为空。

rotation : real
rotation属性表明该item绕着它的transformOrigin顺时针旋转的角度,默认认旋转0度。
这也是属于用到极少的属性,基本可以无视。

scale : real
scale属性用来表明该item缩放的比例,默认值为1,表示不缩放。

state : string
state属性是该item当前状态的名字,这个属性经常会在脚本中切换状态时用到。
如下例所示:

function toggle() {
     if (button.state == 'On')
         button.state = 'Off';
     else
         button.state = 'On';
 }

一个Item的初始基准状态是用空字符表示的,因此将state赋值为空字符,就可以返回到初始基准状态。

states : list<State>
states属性是该item的所有状态的对队列。

1
2
3
4
5
6
7
8
9
10
11
Item {
     states: [
         State {
             // ...
         },
         State {
             // ...
         }
         // ...
     ]
 }

state和state将是我们未来处理QML动画的重要组成之一。

transform : list<Transform>
transform属性持有的是一组变换,详细将会在未来学到。

transformOrigin : enumeration
transformOrigin属性持有的是缩放和旋转的最起始点。共有9个变化起始点。如下图所示:

默认的transformOrigin是Item.Center.

1
2
3
4
5
Image {
     source: "myimage.png"
     transformOrigin: Item.BottomRight
     rotation: 45
 }

上面这个例子中,图片会绕右下角旋转45度。

transitions : list<Transition>
transitions属性持有了一组transition变换。
同样,transition和transitions也是处理动画效果的重要组成之一。

visible : bool
是否可见属性,自然是定义该Item是否可视,当然,推荐少用,因为经常会有异想不到的情况出现,那用什么代替,自然前面说的
opacity,不透明度属性来替代更好。

x : real
y : real
width : real
height : real
这组属性定义了该item的位置,其中x,y是相对于其父item的坐标。

z : real
z属性就是UI中基本常识z order,也就是层次的顺序。当z值越大时,绘制的层次越高,越小,则绘制层次越低,一般来说,z的数值是以QML Item定义的次序来的,所以编写QML的顺序也是很重要。

2. Item方法

相比于Item的属性,Item的方法少而简单了。

Item::childAt ( real x, real y )
返回在坐标(x,y)的子item,这里的坐标是相对于该item的。如果返回null表明没有这样一个子item。

Item::forceActiveFocus ()
强制为该item获取活动的焦点,此方法会导致该item下的的所有FocusScope都获得焦点。

object Item::mapFromItem ( Item item, real x, real y )
将item的(x,y)映射到该Item中返回与(x,y)对应的对象。
如果item为空,则(x,y)是相对于最顶层QML视图的坐标系统。

object Item::mapToItem (Item item, real x, real y)
将该Item的(x,y)映射到item中返回与(x,y)对应的对象。
如果item为空,则(x,y)是相对于最顶层QML视图的坐标系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值