信号和槽机制是Qt编程的基础,它可以让应用程序编程人员把这些互不了解的对象绑定在一起。漕河普通的c++成员函数几乎是一样的—可以是虚函数,可以被重载,可以是公有的、保护的或者私有的。并且也可以被其他c++成员函数直接调用;还有,他们的参数可以任意类型。唯一不同的是:草还有和信号连接在一起,在这种情况下,每当发射这个信号时候,就会自动调用这个槽。
connect()语句:
connect(sender,SIGNAL(signal),receiver,SLOT(slot));
一个信号可以连接多个槽
connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateStatusBarIndicator(int)));
在发射这个信号的时候,会不确定的顺序一个接一个地调用这些槽。
多个信号可以连接个槽
connect(lcd,SIGNAL(overflow()),this,SLOT(handleMathByZero()));
connect(calculator,SIGNAL(divisionByZero()),this,SLOT(handleMathError()));
一个信号可以与两外一个信号相连接
connect(lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(updateRecord(const QString &));
当发射第一个信号时,也会发射第二个信号。除此之外,信号与信号之间的连接和信号与槽之间的连接是难以区分的。
连接可以被移除
disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));