• 4022阅读
  • 3回复

同一信号发送顺序的问题 [复制链接]

上一主题 下一主题
离线rqzrqh
 

只看楼主 正序阅读 楼主  发表于: 2009-06-03
代码功能:按下窗口的close按钮,窗口关闭,同时发送另一个信号
connect(close, SIGNAL(clicked()), this, SIGNAL(send1()));
connect(close, SIGNAL(clicked()), this, SLOT(close()));

现在的问题是,由于同一个信号的发送顺序是随机的,假如先触发了close(),那么该窗口就被关闭了,send1就发送不出去了
所以应该用hide()
不知道我的想法正不正确,假如错误的话又错在哪?


离线zealane

只看该作者 3楼 发表于: 2009-06-04
没问题的。
离线duduqq

只看该作者 2楼 发表于: 2009-06-04
应该没问题的,我有一个程序就是按这样的顺序写的,测试了很多次都没有出现问题
离线billycatcat
只看该作者 1楼 发表于: 2009-06-03
在 Signals and Slots 文档中有:

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.
假如许多槽连接到一个信号上,当该信号发射时,这些槽会以任意的顺序一个接一个地被执行。

所以我觉得它们的调用顺序是随机的,但是send1会不会调用就难说了,按照文档,是会被调用的,但也许在窗口关闭后调用send1可能会出现错误,或许不会。

至于你说的解决方法我就没尝试过了,也许只在close信号上连接一个槽,而该槽完成需要完成的所有功能也是可以的。
快速回复
限100 字节
 
上一个 下一个