当前位置: 首页 > news >正文

信号与槽

目录

1. 信号和槽概述:

信号的三要素:

1.1 信号源:

1.2 信号类型:

1.3 信号的处理方式(槽):

2. 信号和槽的使用:

2.1 连接(关联)信号和槽:

connect() 函数原型:

案例:

2.2自定义槽函数:

2.2.1 代码自定义槽函数:

2.2.2 Qt Creator自定义槽函数:

2.3 自定义信号:

2.4 带参数的信号和槽:

2.5 disconnect 断开信号和槽函数的连接:

2.6 lambda构造槽函数:

1. 信号和槽概述:

信号的三要素:

1.1 信号源:

由什么控件发出的信号。

1.2 信号类型:

用户的不同操作就会触发不同的信号。

(eg.点击按钮,勾选复选框,在输入框中移动光标)

1.3 信号的处理方式(槽):

Qt中可以用connect函数,把一个信号与一个槽关联起来,

实现只要信号触发,就自动执行槽函数。

2. 信号和槽的使用:

一个类中必须有宏Q_OBJECT才能使用信号和槽

2.1 连接(关联)信号和槽:

在Qt中,QObject类提供了⼀个静态成员函数connect(),该函数专⻔⽤来关联指定的信号函数和槽 函数。

connect() 函数原型:

案例:

界面上包含一个按钮,点击按钮,关闭窗口。

#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,&Widget::close);
}Widget::~Widget()
{delete ui;
}

2.2自定义槽函数:

2.2.1 代码自定义槽函数:

自定义一个槽函数和定义一个成员函数一样。

#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,&Widget::HandleClicked);
}Widget::~Widget()
{delete ui;
}void Widget::HandleClicked()
{this->setWindowTitle("按钮已经被按下!");
}

Qt4定义槽函数时:

2.2.2 Qt Creator自定义槽函数:

不需要进行手动连接,只需要定义槽函数内容即可。

2.3 自定义信号:

现在不写emit也可以。

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,&Widget::mySignal,this,&Widget::handleMySignal);
}Widget::~Widget()
{delete ui;
}
void Widget::handleMySignal()
{this->setWindowTitle("自定义信号和槽函数");
}void Widget::on_pushButton_clicked()
{emit mySignal();
}

2.4 带参数的信号和槽:

信号和槽的参数类型必须一致,信号的参数个数>=槽的参数个数。

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,&Widget::mySignal,this,&Widget::handleMySignal);
}Widget::~Widget()
{delete ui;
}
void Widget::handleMySignal(const QString& text)
{this->setWindowTitle(text);
}void Widget::on_pushButton_clicked()
{emit mySignal("带参数的信号");
}

2.5 disconnect 断开信号和槽函数的连接:

可以断开之前连接的信号与槽。

2.6 lambda构造槽函数:

lambda:

http://www.dtcms.com/a/570876.html

相关文章:

  • 定制型网站建设移动网站mip
  • 网络系统管理与维护形考任务2sem优化软件选哪家
  • 小语种网站自己做网站能赚钱
  • 自己学习建设网站做老托福听力的网站
  • 设计商城网站建设服装设计参考网站
  • wordpress格式化sql串天津网络优化网站建设
  • 如何检测网站的打开速度游戏小程序开发报价
  • 网站被k原因网站设置关键字
  • VQ-VAE 代码详细解析及记录
  • 网站建设技术公司企业公示信息查询官网
  • 温州网站建设得花多少钱做自媒体挣钱的网站有哪些
  • p2p网站建设公司wordpress心情
  • pageadmin自助建站专业网页设计制作价格
  • 东莞智通人才网官方网站泉州网站公司
  • qq钓鱼网站在线生成器北京网站设计优刻
  • 诊断服务_0x10和0x11服务
  • 南宁良庆网站建设台州大型网站建设
  • Dirichlet分布的理解与应用
  • 站长工具友链查询科技感设计感的展厅
  • 海南省住房和城乡建设厅网站网上版单位门户网站
  • 微服务组件(E、L、N、O、G)
  • 做网站如何自己寻找客户海口网站提升排名
  • 算法学习入门---二分查找(C++)
  • 网页自助建站百度建立自己的网站
  • 长春平面网站建设网站开发赚钱吗?
  • 华东民航机场建设公司网站通过WordPress开发的主题
  • 网站负责人核验现场拍摄照片电子件自己如何制作一个app
  • 企业营销型企业网站建设网站设计需求分析
  • 怎么自己编码做网站哈尔滨网站制作哪家好薇
  • GPU,CPU,DPU,NPU