如果需要在窗口类中实现按钮的错误操作:
窗口类实现文件——widget.cpp
#include "widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QPushButton b;
b.setParent(this);
b.setText(QString("关闭"));
}
Widget::~Widget()
{
}
解释:
此时的按钮类是一个局部变量,在窗口类构造函数执行完毕时,就会自动调用析构函数释放按钮
运行程序:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正确操作:应当把按钮类作为窗口类的一个成员
窗口类实现文件——widget.cpp
#include "widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b.setParent(this);
b.setText((QString("关闭")));
b.move(100,100);
ob=new QPushButton(this);
ob->setText(QString("高翻,永远的神!"));
}
Widget::~Widget()
{
delete ob;
}
程序运行:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
接下来开始正题:
将窗口按钮和窗口链接,使得按钮发出信号窗口可以接收
窗口类实现文件——widget.cpp
#include "widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b.setParent(this);
b.setText((QString("关闭")));
b.move(100,100);
ob=new QPushButton(this);
ob->setText(QString("高翻,永远的神!"));
connect(&b,&QPushButton::pressed,this,&Widget::close);
//解释:
/*
*&b是信号发出者,指针类型
*&QPushButton::pressed是处理的信号 ,&发送者的类名::信号名字
* this:信号接收者
* &Widget::close是槽函数,信号处理函数 &接收的类名::槽函数的名字
*/
}
Widget::~Widget()
{
delete ob;
}
此时再使用鼠标点击“关闭”按钮,窗口程序结束。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
自定义槽函数:
窗口类实现文件——widget.cpp
#include "widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b.setParent(this);
b.setText((QString("关闭")));
b.move(100,100);
ob=new QPushButton(this);
ob->setText(QString("高翻,永远的神!"));
connect(&b,&QPushButton::pressed,this,&Widget::close);
//解释:
/*
*&b是信号发出者,指针类型
*&QPushButton::pressed是处理的信号 ,&发送者的类名::信号名字
* this:信号接收者
* &Widget::close是槽函数,信号处理函数 &接收的类名::槽函数的名字
*/
/*自定义槽,普通函数的用法
* QT5:任意的成员函数,普通全局变量,静态函数
* 槽函数需要与信号一致(参数,返回值)
* 由于信号都没有返回值,说明槽函数一定没有返回值
*/
//Get_to函数是我自定义的一个修改按钮显示情况的一个槽函数
connect(ob,&QPushButton::released,this,&Widget::Get_to);
//在点击完其中一个按钮之后,信号的接收者变成了另一个按钮,槽函数是把另一个按钮给隐藏
connect(ob,&QPushButton::released,&b,&QPushButton::hide);
/*
* 类比一下的话
* 信号就是短信
* 槽函数就是接受的手机
* 一条短信可以发给发给多个手机
*/
}
Widget::~Widget()
{
delete ob;
}
void Widget::Get_to()
{
ob->setText(QString("高翻,爆发的神!"));
}
程序运行:
点击按钮“高翻,永远的神!”
发现,关闭按钮被隐藏,点击的按钮显示改变。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------