• 4814阅读
  • 3回复

[提问]emit()执行时序问题请教 [复制链接]

上一主题 下一主题
离线kzdg2005
 
只看楼主 正序阅读 楼主  发表于: 2012-05-14
在一个function中发射了两个signal
void fun1()
{
            ........
            emit(signal1());
            emit(signal2());
}

signal1()是与fun2()相connect, signal2()是与fun3()相connect.
在fun1()中先emit信号signal1,需要等到与signal1相connect的fun2()执行完之后,才执行下一条指令emit信号signal2() ?  
离线jdwx

只看该作者 3楼 发表于: 2012-05-14
void fun1()
{
            ........
           断点 emit(signal1("A"));     // signal1(QStirng)与fun2(QString)相connect
            emit(signal2("B"));    // signal2(QStirng)与fun3(QString)相connect
}
只要在“断点”处增加一个断点,单步运行就会看到结果。
只要没有多线程,肯定是按照代码的顺序运行。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线kzdg2005
只看该作者 2楼 发表于: 2012-05-14
我看了下,但是好像并不是那样的。我debug过程如下:
void fun1()
{
            ........
            emit(signal1("A"));     // signal1(QStirng)与fun2(QString)相connect
            emit(signal2("B"));    // signal2(QStirng)与fun3(QString)相connect
}

void fun2(QString temp)       //    在text中打印temp

{
    text->appendPlainText(temp);     // text是一个TextEdit指针
}

void fun3(QString temp1)    
{
    ..............
    fun2(temp1);
}

结果是先打印出B, 然后打印出A。
按照我的理解应该是先打印出A,然后打印出B。所以按照我的debug的结果,我觉得不是要等到与siganl1相connect的fun2执行完后才emit信号signal2.
离线benbenmajia

只看该作者 1楼 发表于: 2012-05-14
回 楼主(kzdg2005) 的帖子
你可以debug跟踪一下,是的
安然.....
快速回复
限100 字节
 
上一个 下一个