一:标准信号与槽connect(信号发送者,发送的信号,信号接收者,槽函数执行);二:lambda表达式connect(信号发送者,信号, [=](信号参数列表){ if( pbtn2->text() == "是") pbtn2->setText("否"); else pbtn2->setText("是"); });优点: 能直接对窗口中的控件做操作三: 自定义槽函数public slots: void mySlot();在cpp文件中实现功能四: 自定义信号示例: 父窗口子窗口切换子窗口中: signals: //自定义信号(只声明,不实现) void mySignal(); public slots: //自定义槽函数 void mySlot(); //父窗口含有子窗口的对象指针,父窗口能让子窗口做事情,但是子窗口不能让父窗口做事情,这就是为什么需要子窗口发信号 emit 信号; //发送信号函数void childMainWindow::mySlot(){ //槽函数中发信号 emit mySignal();}//父窗口中创建一个子窗口对象childMainWindow* pchildWnd; //创建一个子窗口对象槽函数执行隐藏父窗口,显示子窗口父窗口->hide() 子窗口->show()槽函数执行,显示父窗口,隐藏子窗口connect(子窗口对象,子窗口发送的信号,父窗口对象,槽函数); 子窗口->hide() 父窗口->show()注: 注意信号与槽函数的参数需要一致,还有二义性问题(需用函数指针限定)//void (*pFunc)( )=func( )限定信号参数void (子类名::*pFunc)(参数类型列表)=子窗口发送的信号QT4方法解决connect(信号发送者,SIGNAL(信号(参数类型列表)),信号接受者,SLOT(槽函数(参数类型列表)));注: 因为qt4使用的是宏,不做语法检查,只是做函数替换