- connect
- 如何找到信号发出者支持什么信号?
- 自定义槽函数
- 自定义信号
connect
connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue);
QPushButton cLose;
connect(&cLose,&QPushButton::clicked,this,&Widget::close);
注意:直接创建的对象要放入地址,指针类型则直接放入.
QPushButton * cLose;
cLose=new QPushButton("关闭",this);
connect(cLose,&QPushButton::clicked,this,&Widget::close);
cLose
:信号发出者,此参数是一个指针.
&QPushButton::clicked
:信号的发出者,内部的一个信号.格式:&+信号发出者类::+信号名字
this
:信号接收者,此参数为指针.当前窗口,当我们发出一个点击信号,当前窗口就会捕捉到这个信号.
&Widget::close
:widget类在文档中是不存在的,因为它是我们自己定义的一个类.若要查看它的信号应当在QWidget
中.
如何找到信号发出者支持什么信号?
- F1进入索引.
- 找到Signals.
void clicked(bool checked = false) //点一下
void pressed() //按下
void released() //松开鼠标
void toggled(bool checked)
自定义槽函数
- 槽函数在QT5中可以是任意类成员函数,全局函数,静态函数,lambda表达式(隐式函数);
- 槽函数需要与信号相对应(返回值,参数);
- 信号没有返回值,槽函数返回值void;
- void x(int,double,QString);
void c(int,double,QString); - 槽函数参数是为了信号传过来的数据;
- 槽函数参数不能大于信号参数个数,可以少于;
void Widget::OpenSecWindow(void)
{
this->close();
Sec_W.show();
}
在顶层窗口中申明并实现函数.
connect(B2,&QPushButton::clicked,this,&Widget::OpenSecWindow);
连接按钮和功能函数.
自定义信号
signals
:
自定义信号,必须使用signals声名.
signals声名不需实现.
否则定义后必须实现.
- 可以有参数.
- 可以重载.
- 返回值为void.
- 发送信号emit+信号名.
emit signals;