信号,带参数,可以传递参数给连接的槽函数。信号、槽函数类型要一致。
新建项目,QWidget,不勾选ui
/*mywidget.h代码*/ #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QPushButton> //按钮 #include <QDebug> //打印 class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = 0); ~MyWidget(); void sendSignal(); //自定义的函数,发送信号 void MySlot(int a,QString str); //接收信号的槽函数 signals: void MySignal(int a,QString str);//信号与槽相对,信号传参给槽函数 private: QPushButton b; //按钮 }; #endif // MYWIDGET_H
/*mywidget.cpp代码*/ #include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { b.setText("打印参数"); b.setParent(this); //按钮放在本窗体上 connect(&b,&QPushButton::pressed,this,&MyWidget::sendSignal); connect(this,&MyWidget::MySignal,this,&MyWidget::MySlot); } void MyWidget::sendSignal() { emit MySignal(520,"这不是节日!");//发送信号,传参给槽函数 } void MyWidget::MySlot(int a,QString str) { qDebug()<<a<<str.toUtf8().data();//注意字符串的输出方式,qDebug()类似cout } MyWidget::~MyWidget() { }