众所周知 qt中一个信号可以连接两个槽, 今天想体验一下,写了个简单的UI 文件,包含一个简单的lineEdit 、一个pushButton 写了两个connect 如下:
connect(pushButton , SIGNAL(clicked()) , this, SLOTS(serverOpen())); connect(pushButton , SIGNAL(clicked()) , this, SLOTS(serverClose()));
serverOpen()
{
if(!flag)
{
....//pushButton的名字改为打开
flag = true;
.....
}
}
serverClose() { if(flag) { ....//pushButton的名字改为关闭 flag = false; ..... } }
原本以为 点击一次button 上面的两个槽中只有一个 if 语句执行 , 但是执行的时候两个函数都执行了 , 是一前一后执行,后来查资料发现信号与槽的机制:
当一个信号连接多个槽的时候, 在发射信号的时候,会以不确定的顺序一个接一个的调用这些槽
最后我索性把两个if都放到一个槽里面了