• qml中的两种信号处理方法的区别和使用


    首先这里明确两个点,
    第一:信号可以在一个普通的qml文件中定义并发出,当对应的信号发射时,信号处理器就会自动调用。

    #定义#
    可以是无参数的,如:
    signal sig()//括号可省略
    也可以是有参数的,如:
    signal sig(string name,int age)
    
    #发出#
    通常是点击了一个按钮,或者文本框中的文字发生改变之类的事件处理器中发出的
    无参数时,如:
    onClicked:{
    	sig()
    }
    有参数时,如:
    onTextChanged:{
    	sig(name,age)
    }
    切记,信号的发出不会无缘无故,更不能随便乱放,发出信号要在事件处理器中
    这里为什么不说一定,因为我也是初学者,水平不高深,只写自己用到的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    第二:信号处理器必须要在发出信号的对象的定义中进行声明,其中包含调用时要执行的JavaScript代码块。听着比较拗口,因为这是我跟书上抄来的,简而言之,就是,信号处理器的实现要在定义信号的那个对象中去实现。比如说,你在一个qml文件中定义了一个信号,如果想在另一个qml文件中去作信号处理,不能凭空就写了,它也要包含在信号定义的这个对象范围内,如实例化对象,再实现处理器。

    信号处理方式主要有两种,一种是和上面一样,直接on:{xxxx},其中为信号的名字,首字母需要大写。另一个是通过使用Connections类型来实现,如

    Connections{
    	target:xxx	
    	//信号处理函数
    	function fun(){//注:括号里不加参数,官方定义,信号处理函数中可以使用传入的参数
    		xxx
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这两个最开始我都没明白具体怎么用他们,什么时候用,这俩有啥区别。
    现在进入这两个的区分:
    1、on\
    如果一个信号发出之后,不会关联别的信号,它只是自己单独地发出信号,处理一些事情,不用等待别的信号发生,和别的信号互不搭嘎,这个时候只需要这种方式就可。
    2、Connections
    由上可知,Connections的使用情形与之相关,就是在发射信号的对象外部使用这个信号。即可以将某个信号和其他信号联系起来。可以理解为,信号A发出后,需要对象B(target)发出某些信号后,才可以完成某些操作。
    常见的有,在对象A中通过按钮发出信号Sig1,打开某个选项窗口(有确认取消按钮,id设为B),在点击确认(信号Sig2)后,完成事件处理onSig()。可写成大概这个样子:

    Rectangle{
    	id: B
    }
    Rectangle{
    	id: A
    	Connections{
    		target: B
    		onSig(){
    			xxx
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    嵌入式系统中偶发性问题
    相控阵天线有源驻波测试
    用户管理【MySQL】
    opencv学习之边缘检测
    【QT教程】QT6物联网应用
    推荐系统中deepfm算法的pytorch实现
    鄙视测试,理解测试,成为测试
    竞赛 深度学习YOLOv5车辆颜色识别检测 - python opencv
    论文阅读_基于深度学习的异常检测综述
    FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)
  • 原文地址:https://blog.csdn.net/qq_40467670/article/details/132722646