Qt:信号和槽

信号和槽几乎是Qt中最重要的东西,有了这东西,程序各个组件的交互变得更加简单。

信号(signal) 是特殊情况下发生的事件,例如QPushButton中的Clicked()
槽(slot) 又叫槽函数 是用来相应信号的函数。 可以与信号连接 又可以直接被调用。槽函数与一般函数不同点是,其可以与信号连接,信号发射时它也会立即被调用。

信号与槽

这里说自定义信号和槽
平时定义类时 有public protect private 三种权限
在Qt中多了两种,也就是定义信号和槽的地方
signals: 信号定义于此,只声明,不实现
public slots: 槽函数定义于此,既声明,又实现。

信号与槽的连接

QObject::connect(sender , SIGNAL(signal()) , receiver , SLOT(slot()));

senderreceiver 是发送者和接受者,一般是对象的指针,signal() 是信号名称,slot()是槽函数名称。
SIGNALSLOT是Qt的宏,用于指明信号和槽函数
这种写法源于Qt4,较为简单。

此外我们还可以传入函数指针。
假使我们在某处定义了一个槽函数

class Teacher
{
public slots:
	void print()
	{
		qDebug() << "槽函数调用";
	}	
};

再定义按钮指针btn 与 Teacher类对象 tc
我们将其与点击按钮连接起来

connect(btn , &QPushButton::clicked , tc , &Teacher::print);

有时候函数发生重载时,我们可以用函数指针代替某些函数

void(Teacher::* tcp)(QString) = &Teacher::print;

注意

1.信号和槽的参数必须一一对应,但是信号的参数可以多于槽函数的。
2.自定义的信号函数一定不要自己实现,Qt中编译器在.moc文件中会帮忙实现,自己实现会出现重定义错误。
3.槽函数必须有实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值