QT信号和槽的定义及使用

一、信号的给申明 

signals:
    /*
     * 信号声明一定要有signals关键字。
     * 信号没有返回值,可以有参数。
     * 信号可以重载参数
     * 信号就是函数的声明,只需声明无需定义。
     * 在函数中发送信号像调用函数一样,需要在信号函数前添加 emit 关键字
     */
    void my_signal();
    void my_signal(QString str);

 二、槽的定义

public slots:
    /*
     * 槽的参数与信号相同,无返回值
     * 需要定义
     */
    void send_signal();
    void send_signal1();

三、使用

//B是信号的拥有者,然后写信号,再写信号的接收者,最后跟槽函数。 
    connect(B, &QPushButton::pressed, this, &MainWidget::MySlot1);
//函数指针指向信号
    void (MainWidget::*mys1)()=&MainWidget::MySlot2;
    void (subWidget::*ms1)()=&subWidget::my_signal;
    connect(&w, ms1, this, mys1);
    void (subWidget::*ms2)(QString) = subWidget::my_signal;
    void (MainWidget::*mys2)(QString)=&MainWidget::MySlot2;
    connect(&w, ms2, this, mys2);

四、Lambda表达式代替信号接收者和槽函数

     connect(&w, ms2,
             [](){
         qDebug()<<"nihao";
     });

[]不捕获任何外部变量
[变量名, …]默认以值得形式捕获指定的多个外部变量(用逗号分隔),如果引用捕获,需要显示声明(使用&说明符)
[this]以值的形式捕获this指针
[=]以值的形式捕获所有外部变量
[&]以引用形式捕获所有外部变量
[=, &x]变量x以引用形式捕获,其余变量以传值形式捕获
[&, x]变量x以值的形式捕获,其余变量以引用形式捕获

 使用parameter内写信号的传给槽的参数。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值