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相连。

你可能感兴趣的:(C++,c,框架,qt,vc++)