• QT 信号与槽


            QT核心便是信号与槽,通过信号将数据在界面和类中,在本类和其他类中发送和接收。信号负责发送数据(也可以单纯的发送信号),槽负责接收。

    系统自定义的槽

            

    在相应组件上单机右键转到槽即可看见这列表,例如:一般按钮事件的点击(clicked),松开(released),按下(pressed)等。选择相应的槽,那么它会自动帮你做上个步骤:

            1、信号注册

            2、槽函数生成

            3、信号与槽的绑定

    如图:你选择相应的槽,那么他就会在相应的.h和。cpp文件中自动声明槽函数:

            private slots 下声明的函数全是槽函数

            同时也会生成空白模板的槽函数定义

    自动生成的槽函数

    然后你就可以在槽函数里进行自己的逻辑代码操作了默认槽函数的参数是不需要改的,因为自动发送的信号就是与参数对应的,除非要自己额外发送信号给这个槽,那么你就可以去添加自己的函数。

    手动定义信号与槽

            第一步:手动配置信号

            

            直接在发送信号的对象类中用signals关键字来修饰对应的信号,信号没有返回值的,参数自定义,你想让信号传参就自己加,单纯的发信号也可无参,很随意,看需求即可。

            第二步手动定义槽函数:

    在接收的对象类中添加槽函数,直接声明定义即可,但需在 private slots 下声明,定义的话就自己看着写咯,

            第三不关键来咯————连接信号与槽

    [static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

    这是官方给的原函数,看不懂就别看,我也看的不是很懂,

    总之:

    意思就是 connect(发送信号这,信号,信号接收者,接收者的槽);顶多就是写的形式分为QT4的写法和QT5的写法。

    QT5:

    1. connect(ui->add1,&QTextEdit::textChanged(),SLOT( mylabel_add1(ad1)));
    2. connect(ui->add2,&QTextEdit::textChanged(),SLOT( mylabel_add2(ad2)));
    3. connect(ui->add,&QPushButton::clicked(),SLOT( mybtn_add(ad1,ad2,sum));

    这就是QT5的写法就是通过类名查找信号发送者,完事后直接通过槽的名字查找槽。(不好理解)

    我不是很喜欢,

    QT4:

    connect(this,SIGNAL(mysignal(QPair)),this>parentWidget(),SLOT(userinfore(QPair)));

    这种虽然长点但更好理解,connect(发送信号这,信号,信号接收者,接收者的槽),这个报错一般是看不懂的QT5报错就比较好理解了;

    然后,就没有然后了。就完成了。

    这还一张总结的思维导图:

  • 相关阅读:
    【python中处理日期和时间一】_time及calendar相关函数
    7、文本编辑工具Vim
    老杨说运维 | 直播回顾(三):让运维实现有深度的可观测
    数据分析 - 分散性与变异的量度
    OceanBase v4.2 特性解析:新增三种临时表功能,更多的Oracle语句兼容
    从 Linux 内核角度探秘 JDK NIO 文件读写本质
    【OS】操作系统课程笔记 第三章 进程管理
    基于FPGA的移相波束形成verilog实现
    有效的括号(C++解法)
    CSRF跨站请求伪造:django中如何攻击与防御
  • 原文地址:https://blog.csdn.net/weixin_55944697/article/details/132963941