• 4354阅读
  • 6回复

关于一信号连接多槽,各槽的顺序问题。。。 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-05
一信号连接多槽,那么qt有默认的执行各个槽的顺序吗?还有就是,可以设定各个槽执行的顺序吗?
离线iiiyyyhhhsss

只看该作者 1楼 发表于: 2009-09-05
我自己实验了一下,经过试验结果表明是与信号槽定义的顺序有关的。。。。
定义在前的先执行,定义在后的后执行,不知是否如此。。。?
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-05
由此引申想以下情况:
信号1对应槽1;
信号2对应槽2;

信号1引发槽1,当槽1执行过程中(未执行完毕),信号2来了,那么,这个信号会中断槽1的执行,而去执行槽2吗?
离线cnnbboy

只看该作者 3楼 发表于: 2009-09-05
One signal can be connected to many slots,When the signal is emitted, the slots are called one after the other, in an unspecified order。
离线iiiyyyhhhsss

只看该作者 4楼 发表于: 2009-09-05
an unspecified order,那么也就是说是随机的了。。。。

还有3楼的情况可以分析一下吗?
离线cnnbboy

只看该作者 5楼 发表于: 2009-09-05
You could writes some codes to try
离线dbzhang800

只看该作者 6楼 发表于: 2009-09-05
引用第4楼iiiyyyhhhsss于2009-09-05 14:41发表的  :
an unspecified order,那么也就是说是随机的了。。。。
还有3楼的情况可以分析一下吗?


三楼的那段话应该是摘自  C++ GUI QT4 编程 这本书中的,而这本书是官方出的。

另外,manual 中 的描述:

If several slots are connected to one signal, the slots will be executed one after the other, in an arbitrary order, when the signal is emitted.


也就这是Qt的规则,你必须接收这个事实,不能假定任何顺序。因为Qt有可能各个平台上的顺序不同,也可能同一平台下不同版本间的顺序不同,官方不保证顺序,也就是随时都可能改顺序。
快速回复
限100 字节
 
上一个 下一个