QML——信号处理

Qt Quick也就是QML最大的一个特点就是与Qt元对象系统的结合,所以QML也能使用信号与槽机制。下面是几种信号与槽的使用方式

一、信号处理器

信号处理器怎么说呢,可以看作Qt里面的一个匿名槽函数,是一个代码块,除了定义它的地方,没人能调用它,也就是私有的。下面是一段简单的信号处理器的使用方式

Button{
     text: "Button"

     onClicked: {
        console.log("click")
     }
}

上述代码定义了一个button,button点击的时候会发出一个clicked信号,这个onClicked:{}就是捕捉这个信号的信号处理器,{}内就是处理这个信号的代码。

信号处理器的定义格式: on+<信号名(首字母大写)>:{}

二、附加信号处理器

QML中有附加属性和附加信号处理器的概念,这些属性是由附加类型实现和提供,他们可能被附加到另一种类型的对象,其区别在于普通属性是由对象本身或者其基类提供的。下面也有一个例子:

Button{
        text: "Button"
        onClicked: {
            console.log("click")
        }
        Component.onCompleted: {
            console.log("Button Created")
        }
    }

上述代码附加类型信号处理器是Component.onCompleted也就是在普通信号处理器定义的方式前面加上附加类型,

其通用格式为:<附加类型名>.on+<信号名(首字母大写)>:{}

三、Connections

一个Connections对象能够集中处理来自同一个对象的所有信号,其具体使用方法如下:

Button{
        id:id_button
        text: "Button"

    }

    Connections{
        target: id_button
        
        function onClicked()
        {
            console.log("click")
        }
    }
Button{
        id:id_button
        text: "Button"

    }
    
    Connections{
        target: id_button
        
        onClicked:{
            console.log("click")
        }
    }

target是信号的来源对象,代码就表示处理button的clicked信号,在信号处理这块,两种书写方式都是可行的,不过在connections对象内部还是更推荐第二种写法,无它,只是单纯 的好看。

四、信号的产生

信号的产生主要运用到的就两种:

一种是属性改变所发出的信号:

Button{
        id:id_button
        text: "Button"
        
        onTextChanged: {
            
        }
    }

这种属性改变发出的信号一般是   属性名+Changed()

另一种是编写者自定义的信号在触发某种条件时发送:

Button{
        id:id_button
        text: "Button"
        
        signal sgl_click()
        
        onClicked: {
            sgl_click()
        }
    }

这种就是定义了一个信号,当点击时就发送这个信号

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值