槽的声明与普通函数的声明一样,可以携带零或多个形式参数。既然信号的声明类似于普通C++函数的声明,那么,信号也可采用C++中虚函数的形式进行声明,即同名但参数不同。例如,第一次定义的void mySignal()没有带参数,而第二次定义的却带有参数,从这里我们可以看到QT的信号机制是非常灵活的。
信号与槽之间的联系必须事先用connect函数进行指定。如果要断开二者之间的联系,可以使用函数disconnect。
//tsignal.h ... class TsignalApp:public QMainWindow { Q_OBJECT ... //信号声明区 signals: //声明信号mySignal() void mySignal(); //声明信号mySignal(int) void mySignal(int x); //声明信号mySignalParam(int,int) void mySignalParam(int x,int y); //槽声明区 public slots: //声明槽函数mySlot() void mySlot(); //声明槽函数mySlot(int) void mySlot(int x); //声明槽函数mySignalParam (int,int) void mySignalParam(int x,int y); } ... //tsignal.cpp ... TsignalApp::TsignalApp() { ... //将信号mySignal()与槽mySlot()相关联 connect(this,SIGNAL(mySignal()),SLOT(mySlot())); //将信号mySignal(int)与槽mySlot(int)相关联 connect(this,SIGNAL(mySignal(int)),SLOT(mySlot(int))); //将信号mySignalParam(int,int)与槽mySlotParam(int,int)相关联 connect(this,SIGNAL(mySignalParam(int,int)),SLOT(mySlotParam(int,int))); }
|