回复: 事件和信号有什么区别?
#6 [kevinlynx 07-05 17:49]
引用第5楼hechuan于2006-07-05 15:24发表的“”:
我的理解:signal/slot是对象间同步通信机制,信号的释放过程是阻塞的,一定要等到槽函数返回后这个过程才结束。实际上信号释放时Qt是直接调用的槽函数。这实际上就是一般的对象相互间调用方法,只不过Qt的实现方式避免了对象间的耦合,更适合于组件编程。
而事件是一个异步的通信机制,事件产生时事件被放到队列里就继续执行下面的代码,是非阻塞的。这类似于Windows里的消息。
比如一个button的click()信号,它本身不是事件,它是在处理click button这个事件过程中产生的。
.......
不错。。。有点道理了~~~~欢迎更多的人进来讨论,另外,Qt里好象有函数,用来发送事件(消息)的,分为是否等待处理完-----就象 Windows API 里的 SendMessage 和 PostMessage 一样~~一个等待处理完后返回,一个只发送而不管处理完与否就返回。。。
#7 [hechuan 07-05 18:17]
确实有这两种函数,QApplication有两个发送事件的方法:postEvent ()和sendEvent(),对应Windows的PostMessage和SendMessage,分别是异步调用和同步调用。
引用第6楼kevinlynx于2006-07-05 17:49发表的“”:
不错。。。有点道理了~~~~欢迎更多的人进来讨论,另外,Qt里好象有函数,用来发送事件(消息)的,分为是否等待处理完-----就象 Windows API 里的 SendMessage 和 PostMessage 一样~~一个等待处理完后返回,一个只发送而不管处理完与否就返回。。。