码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Qt】信号和槽机制


    创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
    主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
    🔥c++系列专栏:C/C++零基础到精通 🔥

    给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

    在这里插入图片描述

    c语言内容💖:

    专栏:c语言之路重点知识整合

    【c语言】全部知识点总结


    目录

    • 信号和槽机制的原理
    • 信号和槽的使用步骤
    • 信号和槽的优点

    信号和槽机制的原理

    信号是一个事件的发生,槽函数则是对这个事件的响应
    信号和槽可以看作是观察者模式,当一个对象内部发生变化,发出信号后,其他对象可以通过 connect连接这个信号,用于接收通知,并定义一个槽函数对发出的信号做出响应

    信号和槽的使用步骤

    包含 头文件,传输数据的两个类继承于 QObject

      1. 在类的声明中,使用 signals 关键字来声明信号(不必实现函数体)
    • 2.在需要发送信号(数据)的地方使用 Q_EMIT发送信号
    • 3.在接收数据的类中声明和定义槽函数,信号和槽函数的返回值和参数需要完全相同
    • 4.在接受数据的类中使用 connect函数连接信号和槽

    示例:
    发送数据类:

    //Sender.h
    #include 
    #include 
    
    class Sender : public QObject
    {
        Q_OBJECT
    
    signals:
    //声明信号
        void sendMessage(QString message);
    private:
        Sender sender;
    };
    
    //Sender.cpp
    void send()
    {
        //发送信号
        Q_EMIT sendMessage("TianXi Studio");
    }
    

    接收数据类:

    //Receiver.h
    #include 
    #include 
    
    class Receiver : public QObject
    {
        Q_OBJECT
    
    public slots:
        void receiveMessage(QString message)
        {
            qDebug() << "Received message: " << message;
        }
    private:
        Sender* sender;
    };
    
    //Receiver.cpp
    Receiver::Receiver(QObject *parent) : QObject(parent)
    {
        //构造函数
        //链接信号和槽
        QObject::connect(sender, SIGNAL(sendMessage(QString)), this, SLOT(receiveMessage(QString)));
    }
        //槽函数
        receiveMessage(message);
    

    信号和槽的优点

    • 1.实现了类之间的数据通信
    • 2.实现了对象之间的松散耦合,易于维护和扩展
    • 3.信号和槽机制容易扩展,实现自定义的通信机制

    信号和槽可以一对一 、一对多和多对一


    在这里插入图片描述

    大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
    大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
  • 相关阅读:
    c语言进制的转换8进制转换2进制与2转8
    LeetCode 001:两数之和
    艾美捷Enzo人 IgG1 同种型对照化学参数及文献参考
    (六)《数电》——二极管与CMOS门电路(入门)
    二叉树习题总结
    【云原生.大数据】镜像仓库Harbor对接MinIO对象存储
    【Java集合】HashMap系列(四)——HashMap在JDK1.7和JDK1.8中的并发问题的分析以及如何保证并发安全
    springcloud alibaba快速入门
    fatal error: -fuse-linker-plugin, but liblto_plugin.so not found 解决方法
    ARM 10.12
  • 原文地址:https://blog.csdn.net/TiSg0/article/details/140046141
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号