• 5642阅读
  • 5回复

[提问]关于同时执行多个EMIT,如何顺序执行? [复制链接]

上一主题 下一主题
离线禁止关注
 
只看楼主 正序阅读 楼主  发表于: 2012-04-12
关键词: QT4求助
现在又多个EMIT,待执行
我想一个一个执行,即前一个EMIT函数执行完毕后,下一个再执行。
我说的是信号槽函数执行完。


例如 : emit OnUpdate();
我想Update执行完后,再执行下面的emit命令。可否有方法??
离线dbzhang800

只看该作者 5楼 发表于: 2012-04-12
引用第3楼禁止关注于2012-04-12 11:21发表的  :
我是说,emit OnOpen,这个肯定要等用户打开了文件,才能往下执行 emit OnShowData
CPP 代码肯定是这写的:
emit OnOpen;
emit OnShowData;
.......


如果你的表述准确的话,肯定是按照这个顺序执行的。

信号和槽都是普通的 成员函数

emit OnOpen();
emit OnShowData();



OnOpen();
OnShownData();

完全等价。

借助C++常识,你应该坚信他们的顺序。


离线jdwx

只看该作者 4楼 发表于: 2012-04-12
引用第3楼禁止关注于2012-04-12 11:21发表的  :
我是说,emit OnOpen,这个肯定要等用户打开了文件,才能往下执行 emit OnShowData
CPP 代码肯定是这写的:
emit OnOpen;
emit OnShowData;
.......

就是这个顺序。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线禁止关注
只看该作者 3楼 发表于: 2012-04-12
我是说,emit OnOpen,这个肯定要等用户打开了文件,才能往下执行 emit OnShowData

CPP 代码肯定是这写的:
emit OnOpen;
emit OnShowData;


如何确保,OnOpen执行完了,才执行OnShowData

离线fish0619

只看该作者 2楼 发表于: 2012-04-12
signal/slot 本身就是顺序执行的。除非你的slot在其它的线程里面。看看我的这篇博文:http://besteam.im/blogs/article/41/ ,有助于你理解signal/slot的机制。

另外,你也可以写几个测试程序看看。在slot函数里面写上`qDebug()<<"顺序号"`
离线jdwx

只看该作者 1楼 发表于: 2012-04-12
你可以调试,单步运行程序,看看emit顺序。
如果不用多线程,emit是按先后顺序的,也就是槽函数执行完,才能emit下一个信号。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个