Qt的事件模型

和其它开发GUI的Framework一样,Qt也有它自己的一套事件处理机制。

VC和wxWidget中的Message和Event Handler

Java中的Event和EventListener

C#中的Event和EventHanlder

其实从本质来讲,都差不多,主要是2部分组成,消息和消息处理函数。

在Qt中,这2部分分别称作signal和slot,一个signal可以和多个slot连接,同样,一个slot可以接收多个signal。

signal和slot的本质都是函数,它可以是public或者private的。

在Qt的根对象QObject中有一个connect函数,它用来将signal和slot相连接。它的原型如下:

如对象A有一个signal是getvalue(int);

对象B有一个slot是setvalue(int);

那么可以用QObject::connect( A, SIGNAL(getvalue(int)), B, SLOT(setvalue(int)) );

那在这之后,如果A对象发出signal getvalue(int)时,那么同它相连的setvalue(int)也就会被调用。与上面举例的一些语言及框架相比,Qt的事件处理机制来的更清晰简单。因为signal和slot本身都是函数,他们之间的接口也就是定义的函数的参数列表。并不需要再特别定义事件类或者消息等,使用上十分灵活。只要是和signal有同样或者兼容的参数列表,那么就能将signal与slot相连。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值