文档章节

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

shzwork
 shzwork
发布于 09/21 08:18
字数 414
阅读 8
收藏 0

版权声明:本文为博主原创文章,遵循 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

本文转载自:https://blog.csdn.net/qq78442761/article/details/90753986

shzwork
粉丝 15
博文 828
码字总数 18401
作品 0
厦门
私信 提问
Qt Quick 之 QML 与 C++ 混合编程详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/foruok/article/details/32698603 Qt Quick 技术的引入,使...

shzwork
09/23
19
0
如何实现PyQt5与QML响应彼此发送的信号?

对于PyQt5+QML+Python3混合编程,如何实现PyQt5与QML响应彼此发送的信号,这是一个棘手的问题。 大抵有如下五种方式: (要运行下面五个例子,千万不能在eric6中运行,会报错。错误信息是:q...

罗兵
2015/01/21
0
0
C++与QML交互2:在QML中调用C++特性

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xiguagua/article/details/56991367 QML引擎(QQmlEngine)...

shzwork
09/20
16
0
将QML与Qt Widgets相结合

简述 在使用 Qt Widgets 时,经常要实现一些比较炫酷的效果(例如:滑动、翻页),这时选择 QML 会显得非常简单。 那么,问题来了: 能不能将 QML 和 Qt Widgets 结合在一起使用? 如果能,都...

潘志闻
2017/08/10
0
0
Qt Quick 图像处理实例之美图秀秀(附源码下载)

在《Qt Quick 之 QML 与 C++ 混合编程详解》一文中我们讲解了 QML 与 C++ 混合编程的方方面面的内容,这次我们通过一个图像处理应用,再来看一下 QML 与 C++ 混合编程的威力,同时也为诸君揭...

foruok
2014/07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
22分钟前
3
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
23分钟前
3
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
24分钟前
4
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
29分钟前
3
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
31分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部