以下的代码里面有自定义槽函数的内容,同时也有信号实现的函数;
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = 0);
~MainWidget();
void mySlot();//自定义的槽函数
private:
QPushButton btn1;
QPushButton *btn2;
};
#endif // MAINWIDGET_H
#include "mainwidget.h"
#include <QPushButton>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
// QPushButton btn1;
// QPushButton btn2;
btn1.setParent(this);
btn1.setText("colse");
btn1.move(100,100);
btn2 = new QPushButton(this);//指针没有空间,是需要动态的对其进行空间的分配
btn2 ->setParent(this);
btn2 ->setText(" 3 2 1 ");
connect(&btn1,&QPushButton::pressed,this ,&MainWidget::close);
/* 对connect的说明:
* &btn1 :信号发出着,指针类型
* &QPushButton::pressed:处理信号, &发送者的类名::信号名字
* this:信号接收者
* &MainWidget::close: 槽函数,信号处理函数 &接收者的类名::槽函数名字
*/
/*自定义槽,说的更加通俗一点,就是普通函数的用法
* QT5:可以是 任意的成员函数(常用这种方法,直接写成该类的成员函数),普通全局函数,静态函数 都可以是槽函数
* 槽函数需要和信号一致(参数,返回值)
* 由于信号都是没有返回值,所以,槽函数一定没有返回值
*/
//释放按钮btn2实现里面的文本内容发生改变
connect(btn2,&QPushButton::released,this,&MainWidget::mySlot);//在写自定义信号槽函数的时候,一定要看发送信号函数的类型,这里released信号的函数是:void QAbstractButton::released()
//即released函数没有参数,也没有返回值,槽函数需要和信号一致,也没有参数和返回值
//释放按钮btn2隐藏按钮btn1
connect(btn2,&QPushButton::released,&btn1,&QPushButton::hide);
}
//自定义槽函数的实现
void MainWidget::mySlot()
{
btn2->setText("I LOVE YOU");
}
MainWidget::~MainWidget()
{
}
信号和槽:QT对象之间通信的接口