在写程序的时候,一直用到Qt的信号与槽机制
1、我们可以一个信号连接多个槽例如:
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(upDateValue(int)));
connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
slider发射这个信号后,以不确定的顺序执行这两个对应的槽函数。
2、也可以多个信号连接同一个槽,例如:
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
connect(AScanAction, SIGNAL(dataComming(int)), this, SLOT(setValue(int)));
无论发射的是哪一个信号,这个setValue(int)槽函数都会被执行。
3、连接的移除
disconnect(slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
这种情况出现的比较少,当删除对象时,Qt会自动移除和这个对象相关的所有连接。
4、我们很容易就忘记了,信号与信号之间也是可以建立连接的,例如:
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(updateRecord(const QString &)));
第一个信号发射时,第二个信号也会被发射,这样在写多线程或者其他复杂程序的时候,就显得很简洁,方便,节省资源。