QML 组件 五

1、内联组件

除了定了大写字母开头的qml文件的顶级组件外,还可以在内部定义内联组件(inLine Component)但是需要使用component元素声明。

 

2、组件的使用

编写QML应用程序时,无论规模大小,都应该将QML代码分离成一些较小的组件来执行特定的功能,而不是将所有的代码都写在一个QML文件中。

有用的组件一般包括:属性,数据,通信。也就是属性,函数,和信号。

 

3、属性别名

属性别名会将新声明的属性作为一个已经存在的属性的直接引用。

声明语法: [default] property alias<name>:<alias reference>

其中alias reference 可以使用两种形式:<id>.<property>和<id>

也就是可以引用同一文件中对象的id或者同一文件中对象的属性。

作用:对于允许外部对象直接修改和访问一个组件中的子对象是很有用的。

 

 4、在组件中添加函数和信号

JavaScript代码的函数,语法如下:

function <name>([<parameter name>[,...]]){<body>}

这个声明可以出现在任何地方,一般写在顶部。不能在相同的类型块中声明两个相同名称的函数。

与信号不同,函数的参数类型不需要声明。

Rectangle{
  id:rect
  width:100; height:100
  function say(text){
      console.log("You said: " + text );}
}

MouseArea{
   anchors.fill:parent
   onClicked:rect.say("Mouse clicked")  
}

  一个函数可以和一个信号进行关联,这样每当信号发射时都会自动调用这个函数。

 

5、在组件中添加信号

定义一个新的信号的语法:

signal <name> [(<type><parameter name>[,....])]

同样可以该声明可以出现在任何地方,不过一般都是包含在顶部。在一个类型块中不能声明两个相同名称的信号。

Item{
    signal clicked
    signal hovered()
    signal performAction(string action, variant actionArgument)  
}

如果信号没有参数,括号就是可选的。如果使用了参数,必须声明参数的类型。向一个组件中添加一个信号,便会自动添加一个信号处理器,它使用”on<SignalName>”来命令。对应的信号处理器分别为

onClicked
onHovered
onPerformAction

 

6、将信号关联到其他函数和信号上

connect()函数的使用。当一个信号关联到一个函数上,这个函数会在信号发射时自动调用。(信号槽)这样信号会被这个函数接收而不是别信号处理器来接收。

被发射。

 

posted @ 2016-06-24 16:15  Dkma像疯子一样战斗  阅读(1535)  评论(0编辑  收藏  举报