QML笔记-对QML中信号与槽的基本认识

久未见 提交于 2019-11-30 05:13:49

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq78442761/article/details/90753986
目录

 

 

基本概念

演示及实例

 

基本概念
首先是信号的声明,如下:

Rectangle{
 
    id: rectangleId
    signal greet(string message)
 
    ...
}
当声明一个信号后会自动生成一个on<SignalName>这个槽函数(这种是JavaScript代码)

 

使用下面的方式也可以关联信号与槽,槽函数如下!

function myGreeting(mMessage){
 
    console.log("myGreeting function called. The parameter is : " + mMessage)
    
    ...
}
关联如下:

Component.onCompleted:{
 
    rectangleId.greet.connect(rectangleId.myGreeting)
}
 

演示及实例
运行截图如下:

程序结构如下:

源码如下:

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
 
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
 
    property int increment: 50
 
    Rectangle {
 
        id: rectangleId
        width: 200 + increment
        height: 300
        color: "red"
 
        signal greet(string message)
 
 
        function myGreeting(mMessage){
 
            console.log("myGreeting slot called. The parameter is : " + mMessage)
            increment += 50
        }
 
        MouseArea{
 
            anchors.fill: parent
            onClicked: {
 
                rectangleId.greet("Hello there")
            }
        }
 
        Component.onCompleted: {
 
            greet.connect(rectangleId.myGreeting)
        }
    }
}
另外一种方法:

import QtQuick 2.9
import QtQuick.Window 2.2
 
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
 
    property int increment: 50
 
    Rectangle {
 
        id: rectangleId
        width: 200 + increment
        height: 300
        color: "red"
 
        signal greet(string message)
 
 
        onGreet: {
 
            console.log("onGreet: greet signal emited, parameter is : " + increment)
            increment += 50
        }
 
        MouseArea{
 
            anchors.fill: parent
            onClicked: {
 
                rectangleId.greet("Hello there")
            }
        }
    }
}
 
————————————————
版权声明:本文为CSDN博主「IT1995」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq78442761/article/details/90753986

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!