十三 Qt自定义信号


前言

一 自定义信号

class MyWidget : public QWidget
{
	//1.使用信号时间必须使用Q_OBJECT
	Q_OBJECT
	
	//2.signals- 信号的专有修饰词
	signals:
		void MySignal(QString message);
}
  1. Q_OBJECT = moc编译器可以连接信号和槽函数
  2. signals: 信号专用词。必须有signals。但是Qt5不一定有public slots:
内容说明
1.定义在某个类里面QObject::connect(&myWidget,&MyWidget::MySignal,) 消息发送者必须来自对象
2.使用signals关键字修饰signals:
void MySignal(QMessage message);
3.函数仅需要声明,不需要定义
4.信号和槽都是void返回值信号:void MySignal(QMessage message);
槽函数:void recSlot1(QString mess) {;}
5.signals是qt自定义的标志

二、连接信号和槽QObject::connect

QObject::connect(&myWidget,&MyWidget::MySignal,信号接收者,槽函数)

三、发送信号 emit

void function()
{	
	//把自己需要传递的信息发送出去
	emit MySignal(message);
}

上述的字符串变量message是会发送给槽函数的

四、 自定义槽函数

可以定义三种槽函数

槽函数类型说明
普通成员函数public:
在这里插入图片描述
指明定义的槽函数在这里插入图片描述
全局函数在这里插入图片描述
  1. 普通函数:
    就是按照普通成员函数定义
class
{
 public:
   void recSlot1(QMessage);
}
  1. slot函数
    需要使用 slots 标志,对比就是 signals
class
{
 public slots:
   void recSlot2(QMessage);
}
槽函数类型说明
public slots可以接受类以外的信号
protected slots可以接受类本身和子类的信号
privated slots可以接受类本身的信号
  1. 全局函数
    在全局下定义全局函数
//全局空间
 void  recSlot3(QMessage);
  1. connect 链接三种消息
//类的成员函数作为槽函数
QObject::connect(&mywidget,&MyWidget::MySignal,&mywidget,&MyWidget::recSlot1);
//信号函数和槽函数相连接
QObject::connect(&mywidget,&MyWidget::MySignal,&mywidget,&MyWidget::recSlot2);
//全局函数作为槽函数
QObject::connect(&mywidget,&MyWidget::MySignal,&recSlot3);
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值