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

网站的超级链接怎么做数据分析培训机构哪家好

网站的超级链接怎么做,数据分析培训机构哪家好,如何让wordpress重新安装,微信公众号怎么做网站这里写目录标题 1. 信号和槽概述信号的本质槽的本质 2. 信号和槽的使用2.1 连接信号和槽2.2 文档查询 3.自定义信号和槽3.1 自定义槽3.2 自定义信号3.3 带参数的信号和槽 4. 信号和槽的断开 1. 信号和槽概述 在Qt中,⽤⼾和控件的每次交互过程称为⼀个事件。⽐如&quo…

这里写目录标题

  • 1. 信号和槽概述
    • 信号的本质
    • 槽的本质
  • 2. 信号和槽的使用
    • 2.1 连接信号和槽
    • 2.2 文档查询
  • 3.自定义信号和槽
    • 3.1 自定义槽
    • 3.2 自定义信号
    • 3.3 带参数的信号和槽
  • 4. 信号和槽的断开

在这里插入图片描述

1. 信号和槽概述

 	在Qt中,⽤⼾和控件的每次交互过程称为⼀个事件。⽐如"⽤⼾点击按钮"是⼀个事件,"⽤⼾关 闭窗⼝"也是⼀个事件。每个事件都会发出⼀个信号,例如⽤⼾点击按钮会发出"按钮被点击"的信 号,⽤⼾关闭窗⼝会发出"窗⼝被关闭"的信号。Qt 中的所有控件都具有接收信号的能⼒,⼀个控件还可以接收多个不同的信号。对于接收到的每 个信号,控件都会做出相应的响应动作。例如,按钮所在的窗⼝接收到"按钮被点击"的信号后,会做 出"关闭⾃⼰"的响应动作;再⽐如输⼊框⾃⼰接收到"输⼊框被点击"的信号后,会做出"显⽰闪烁的 光标,等待⽤⼾输⼊数据"的响应动作。在Qt中,对信号做出的响应动作就称之为槽。信号和槽是Qt特有的消息传输机制,它能将相互独⽴的控件关联起来。⽐如,"按钮"和"窗⼝" 本⾝是两个独⽴的控件,点击"按钮"并不会对"窗⼝"造成任何影响。通过信号和槽机制,可以将"按 钮"和"窗⼝"关联起来,实现"点击按钮会使窗⼝关闭"的效果。

信号的本质

信号是由于⽤⼾对窗⼝或控件进⾏了某些操作,导致窗⼝或控件产⽣了某个特定事件,这时Qt对 应的窗⼝类会发出某个信号,以此对⽤⼾的操作做出反应。因此,信号的本质就是事件。如:

  • 按钮单击、双击
  • 窗⼝刷新
  • ⿏标移动、⿏标按下、⿏标释放
  • 键盘输⼊

​那么在Qt中信号是通过什么形式呈现给使⽤者的呢?

  • 我们对哪个窗⼝进⾏操作,哪个窗⼝就可以捕捉到这些被触发的事件。
  • 对于使⽤者来说触发了⼀个事件我们就可以得到Qt框架给我们发出的某个特定信号。
  • 信号的呈现形式就是函数,也就是说某个事件产⽣了,Qt框架就会调⽤某个对应的信号函数,通知使⽤者。
    在Qt中信号的发出者是某个实例化的类对象。

槽的本质

槽(Slot)就是对信号响应的函数。槽就是⼀个函数,与⼀般的C++函数是⼀样的,可以定义在类的任何位置(public、protected或private),可以具有任何参数,可以被重载,也可以被直接调⽤(但是不能有默认参数)。槽函数与⼀般的函数不同的是:槽函数可以与⼀个信号关联,当信号被发射时,关联的槽函数被⾃动执⾏。

说明

  1. 信号和槽机制底层是通过函数间的相互调⽤实现的。每个信号都可以⽤函数来表⽰,称为信号函数;每个槽也可以⽤函数表⽰,称为槽函数。例如:"按钮被按下"这个信号可以⽤clicked()函数表⽰,"窗⼝关闭"这个槽可以⽤close()函数表⽰,假如使⽤信号和槽机制实现:"点击按钮会关闭窗⼝"的功能,其实就是clicked()函数调⽤close()函数的效果。
  2. 信号函数和槽函数通常位于某个类中,和普通的成员函数相⽐,它们的特别之处在于:
  • 信号函数⽤ signals关键字修饰,槽函数⽤publicslots、protectedslots或者privateslots修饰。signals和slots是Qt在C++的基础上扩展的关键字,专⻔⽤来指明信号函数和槽函数;
  • 信号函数只需要声明,不需要定义(实现),⽽槽函数需要定义(实现)。

2. 信号和槽的使用

2.1 连接信号和槽

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

关于QObject
QObject 是Qt内置的⽗类.Qt中提供的很多类都是直接或者间接继承⾃QObject.
列如:
在这里插入图片描述

connect() 函数原型:

QMetaObject::Connection connect(const QObject *sender,//当前信号由哪个控件发出const char *signal,//信号类型const QObject *receiver,//哪个对象负责处理const char *method,//这个对象该怎么处理Qt::ConnectionType type = Qt::AutoConnection//可选参数,暂时不用管
)

参数说明

  • sender:指向发送信号的对象的指针。当这个对象发出指定的信号时,连接会被触发。
  • signal:一个 C 风格的字符串,表示要连接的信号的名称。所谓的信号也是QT中对象提供的一些成员函数。
  • receiver:指向接收信号的对象的指针。这个对象将执行与信号关联的槽函数。
  • method:一个 C 风格的字符串,表示要连接的槽函数的名称。
  • type:可选参数,指定连接的类型。默认值为 Qt::AutoConnection,表示根据发送者和接收者的线程关系自动选择连接类型。
    connect 函数就具有了一定的参数检查功能.列如:
    如果你传入的第一个参数和第二个参数不匹配, 或者第三个参数和第四个参数不匹配. (不匹配, 2 , 4 参数的函数指针, 不是 1 , 3 参数的成员函数) 此时代码编译出错.详细使用可以浏览文档

代码⽰例:在窗⼝中设置⼀个按钮,当点击"按钮"时关闭"窗⼝".
在这里插入图片描述

如何知道QPushButton有个clicked信号,Widget有一个close槽。

2.2 文档查询

这些都是可以从文档里面查询的,示例:
在这里插入图片描述

3.自定义信号和槽

3.1 自定义槽

自定义槽示例:这个函数需要在widget.h中声明一下
在这里插入图片描述
那么还有没有更快的方式? 兄弟,有的有的,像这样的方式还有…
图形化操作,直接就是一个拖拽,按照图片中操作,就可以直接生成一个函数。
在这里插入图片描述
.h文件中会自动生成函数声明;
在这里插入图片描述

然后我们对函数进行编写即可:效果是一样的
在这里插入图片描述
其实这是通过函数名来实现自动连接,当函数名符合规则后,QT就能自动把信号和槽连接,规则也十分简单on_ObjectName_信号名。

3.2 自定义信号

所谓的QT信号,本质上也是一个函数,但是信号则是一类比较特殊的函数,我们只需要写出函数声明,并告诉QT,这是一个信号即可,这个函数的定义,是QT编译过程中自动生成的。
⾃定义信号函数书写规范
(1)⾃定义信号函数必须写到"signals"下;
(2)返回值为void,只需要声明,不需要实现;
(3)可以有参数,也可以发⽣重载

在这里插入图片描述
在这里插入图片描述
信号创建后需要发射,如果是内置类型,可以自行触发,QT中内置了关键字emit去触发自定义信号。

3.3 带参数的信号和槽

Qt 的信号和槽也⽀持带有参数,同时也可以⽀持重载.
此处我们要求,信号函数的参数列表要和对应连接的槽函数参数列表⼀致.
此时信号触发,调⽤到槽函数的时候,信号函数中的实参就能够被传递到槽函数的形参当中.

在这里插入图片描述
QT中如果要让某个类使用信号槽,则必须在类的最开始,写下Q_OBJECT宏
在这里插入图片描述

4. 信号和槽的断开

使用disconnect函数即可断开,参数和connect一致。

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);
}Widget::~Widget()
{delete ui;
}void Widget::handleClick()
{this->setWindowTitle("修改标题");qDebug()<<"handleClik1";
}void Widget::handleClick2()
{this->setWindowTitle("修改标题2");qDebug()<<"handleClik2";
}void Widget::on_pushButton_2_clicked()
{//1.先断开pushbutton的信号槽disconnect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);//2.重新绑定信号槽connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick2);}
http://www.dtcms.com/wzjs/191786.html

相关文章:

  • 珠海市住房和城乡建设厅网站搜索引擎竞价排名
  • 做暖暖的视频网站如何让百度收录自己的网站
  • 青岛公司做网站百度热搜的含义
  • 免费行情网站链接百度资源搜索资源平台
  • 洛阳网站建设哪家权威seo收录查询工具
  • 沈阳个人做网站互联网营销师报名入口官网
  • 网站模板批量下载优化营商环境发言稿
  • 百度做的网站字体侵权网站seo运营培训机构
  • 网站不备案可以做百度推广吗app开发需要哪些技术
  • 高端网站案例欣赏潍坊网站开发公司
  • 网站设计制作费用注册网站平台要多少钱
  • 良品铺子网站建设贵阳搜索引擎排名推广
  • drupal与wordpress郑州seo排名优化公司
  • 深圳网站公安局备案流程株洲发布最新通告
  • 水果网页制作模板seo建站优化推广
  • 网站开发角色分配权限百度网址安全检测
  • 百度收录好的网站排名网站免费seo
  • 什么软件 做短视频网站免费网站搭建
  • 网站开发设计心得安顺seo
  • 鄂州市城乡建设委员会网站零基础seo入门教学
  • 网站建设网站制作哪家好提高工作效率的方法不正确的是
  • 工信部网站备案查询seo技巧
  • 怎么建设网站挣钱网上推广
  • 爱站工具有加超人下拉系统优化培训方式
  • 电子商务网站建设与管理课程的目的深圳百度seo整站
  • 陕西党建网站两学一做常态化关键词工具网站
  • 有经验的高密网站建设营销策划的十个步骤
  • 苏州网站建设科技有限公司网络营销的策划方案
  • 阳谷企业做网站推广微信公众号推广2元一个
  • 中国纪检监察报是日报还是周报百度seo排名规则