connect(发起者,信号,接收者,槽函数)
发起者发出信号,接收者执行槽函数
-
发送者和接收者都需要是 QObject 的子类(当然,槽函数是全局函数、Lambda表达式等无需接收者的时候除外);
-
信号和槽函数返回值是 void
-
信号只需要声明,不需要实现
-
槽函数需要声明也需要实现
-
槽函数是普通的成员函数,作为成员函数,会受到 public、private、
protected 的影响; -
使用 emit 在恰当的位置发送信号;
-
任何成员函数、static 函数、全局函数和 Lambda 表达式都可以作为槽函
数 -
信号槽要求信号和槽的参数一致,所谓一致,是参数类型一致。
-
如果信号和槽的参数不一致,允许的情况是,槽函数的参数可以比信号的少,
即便如此,槽函数存在的那些参数的顺序也必须和信号的前面几个一致起
来。这是因为,你可以在槽函数中选择忽略信号传来的数据(也就是槽函数
的参数比信号的少)。 -
查看控件信号,当前没有Signal,必须看父类
去父类中查找,因为是从父类中继承下来的
- 在堆上,在当前this窗口创建按钮控件
QPushButton *btn1=new QPushButton("关闭",this);
自定义信号和槽
窗口切换【设计思路】
显示窗口要先创建其控件(new)
查询窗口找不到主窗口,主窗口在其构造函数里
所以emit back()信号
- 创建swidget类
- 在widget创建swidget窗口控件
- widget使用信号槽,this隐藏,s显示
- 在swigdet中emit back信号,widge中使用信号槽接受信号,并this显示,s隐藏。而不能在swidget中将w