C++Qt——自定义信号与槽

自定义信号与槽

自定义信号与槽是实现对象间通信的一种机制,比如按钮和窗口间的通信。

一、定义信号

Signal关键字声明的类成员函数。不需要实现,只需要声明。

signals:
    void mySignals();//定义信号,不用实现

二、定义槽

可以使任何普通成员函数,类定义中使用关键字slot标识,有返回类型,可接受参数。参数需要与信号发出的参数类型匹配。
信号带参数的情况下,槽可以无参数。

private slots:
    void mySlots();//头文件定义槽

void Widget::mySlots()//.cpp实现
{
    std::cout << "mySlot" << std::endl;
}

三、连接信号与槽

使用QObject::connect

connect(this,SIGNAL(mySignals()),this,SLOT(mySlots()));

四、发射信号

使用emit关键字发射信号

 emit mySignals();//发送信号,可见

五、完整代码

无参与有参

在这里插入代码片#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <iostream>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

signals:
    void mySignals();//定义信号,不用实现
    void mySignalsWithPara(int value);//带参数
private slots:
    void mySlots();//定义槽
    void mySlotsWithPara(int value);//带参数

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(this,SIGNAL(mySignals()),this,SLOT(mySlots()));
    connect(this,SIGNAL(mySignalsWithPara(int)),this,SLOT(mySlotsWithPara(int)));

    emit mySignals();//发送信号,可见
    emit mySignalsWithPara(100);//发送信号,可见


}

Widget::~Widget()
{
    delete ui;
}

void Widget::mySlots()
{
    std::cout << "mySlot" << std::endl;
}

void Widget::mySlotsWithPara(int value)
{
//    std::cout << "mySlotWithPara  " << std::endl;
  //  std::cout <<  value << std::endl;

      qDebug() << "mySlotWithPara  " ;
      q     Debug() <<  value ;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值