1. 介绍
connect函数是Qobject类提供的静态成员函数,这个Qobject类是Qt中所有类的祖宗类,这个机制类似于JAVE中同样也是有一个Object祖宗类,QWidget类属于Qobject类的子类,所以包括QPushButton这些控件等等,都可以使用这个connect函数
2. connect的具体使用
图中的示例是简单创建一个具有关闭按钮的界面的示例中,connect的部分,这个示例很简单,先创建好工程,然后只需要在QWidget类里面,简单用代码的方式创建一个PushButton空间,然后将按钮和QWidget空间的用于关闭的槽函数关联起来即可
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button = new QPushButton(this);button->setText("关闭");button->move(300,300);connect(button,&QPushButton::clicked,this,&QWidget::close);
}Widget::~Widget()
{delete ui;
}
但仔细看文档会发现,第二个参数和第四个参数的类型是char*,但是我们在具体使用的时候,传入的其实是函数指针,在C++的语法当中,这是不被允许的,但这个能通过的原因是:
在Qt5开始后,对这部分进行了更新,对connect函数进行了泛型编程,而且加入了类型萃取器的方式,严格的控制了第一个参数和第二个参数必须相关(这里的相关指的是,第二个参数的信号必须是来着第一个参数的类内或者其父类继承下来的),第三个参数和第四个参数必须相关,更新前需要使用两个宏去对函数指针进行转换的,分别是SIGNAL和SLOT,但现在不用。
总结
为了加深信号与槽的学习,总结了关于connect函数的基本使用,并且举了个简单的小例子,接下来会零零散散的去总结一些在学习信号和槽过程中的一些小知识点,最后如果有时间会整理起来到一个博客中。