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

企业网站建设的收获做cpa能用什么网站

企业网站建设的收获,做cpa能用什么网站,网络工程师招聘,网站建设方案有哪几种🏠个人主页:Yui_ 🍑操作环境:Qt Creator 🚀所属专栏:Qt 文章目录 1.信号和槽的概念1.1 信号的本质1.2 槽的本质1.3 补充说明2. 信号和槽的使用2.1 connect函数介绍2.2 connect函数的简单使用2.2.1 图形化方…

🏠个人主页:Yui_
🍑操作环境:Qt Creator
🚀所属专栏:Qt

在这里插入图片描述

文章目录

  • 1.信号和槽的概念
    • 1.1 信号的本质
    • 1.2 槽的本质
    • 1.3 补充说明
    • 2. 信号和槽的使用
    • 2.1 connect函数介绍
    • 2.2 connect函数的简单使用
      • 2.2.1 图形化方式
      • 2.2.2 代码方式
    • 2.3 查看内置信号和槽
  • 3. 知识补充——connect的参数类型问题

在正式介绍 connect函数前,还需要好好了解信号和槽的概念

1.信号和槽的概念

所谓信号大家都不陌生,生活中的红绿灯就是一种信号,当出现红灯时,你就接受到了一个红灯信号,然后指向停下来的动作。
image.png
同时,如果你也有学习Linux的经历,也会学到信号Signal,是系统内部的通知机制。
Linux中的信号会涉及到3个要素:

  • 信号源:谁发送的信号。
  • 信号的类型:哪种类型的信号。
  • 信号的处理:执行自定义的信号处理函数或者使用系统默认的处理函数。
    Qt中的信号和Linux中的信息,虽然不是一样的概念,但其实也有相似之处。
    Qt中谈到信号,也会涉及到三个要素:
  • 信号源:由哪个控件发出的信号。
  • 信号的类型:用户进行的不同操作,比如’用户点击按钮’、'用户关闭窗口’都是一个事件,每个事件都会发出一个信号,点击按钮触发点击信号,在输入框中移动光标,触发移动光标的信号。
  • 信号的处理方式:Qt中的所有控件都具有接受信号的能力,一个控件还可以接受多个不同的信号。对于接受到的每个信号,控件都会做出响应的动作,在Qt中,对信号做出的响应动作就称之为槽
    我们写GUI程序,就是要让用户进行操作,就是要和用户进行交互,这个过程中就需要关注,用户当前的具体操作是什么样的操作。

信号和槽是Qt中特有的消息传输机制,他能将相互独立的控件关联起来,比如按钮窗口本身就是两个独立的控件,点击按钮并不会对窗口造成任何影响。通过信号和槽机制,可以将按钮和窗口进行关联,实现点击按钮会使窗口关闭的效果。
演示:
Qt_close.gif
现在你可能看不懂,但当学完connect函数就没问题了。
image.png

1.1 信号的本质

信号的本质是事件
信号是由于用户对窗口或者控件进行了某种操作,导致窗口或者控件产生了某个特定的事件,这时Qt对于的窗口类会发送某个信号,以此对用户的操作做出反应。
常见的事件有:

  • 按钮单点、双击。
  • 窗口刷新。
  • 键盘输入。
    。。。
    那么信号Qt中的信号通过什么样的形式呈现够使用者的呢?
    当某个事件产生了,Qt框架会调用某个对应的信号函数,通知使用者。
    信号的呈现形式就是函数

1.2 槽的本质

槽的本质就是对信号响应的函数,是一个回调函数。
槽函数与一般的函数不同,槽函数可以与一个信号关联,当信号产生时,关联的槽函数会自动被执行。

1.3 补充说明

信号和槽机制底层是通过函数间的相互调用实现的,每个信号都可以用函数来表示,称为信号函数,每个槽也可以用函数表示,称为槽函数。例如按钮被按下,这个信号可以用clicked()函数表示,窗口关闭这个槽可以用close()函数表示,假如使用信号和槽机制实现点击按钮会关闭窗口的功能,其实就是使用clicked()函数调用close()函数的效果。
信号函数和槽函数通常位于某个类中,和普通的成员函数相比,它们的特别在于:

  • 信号函数使用signals关键词修饰,槽函数用private slots/protected slots/public slots修饰。signals/slots是Qt中在C++的基础上扩展的关键字,专门指明信号函数和槽函数。
  • 信号函数只需要声明,不需要定义(实现),而槽函数需要定义(实现)。

信号函数的定义自动在编译之前生成,编写Qt应用程序的程序员无需关注。
这种自动生成代码的机制称为元编程,在很多场景中都能见到。

2. 信号和槽的使用

在Qt中,QObject类提供了一个静态成员函数connect()函数,改函数专门用来关联指定的信号函数和槽函数。

2.1 connect函数介绍

connect(const QObject* sender,const char* singal,const QObject* receiver,const char* method,Qt::ConnectionType type = Qt::AutoConnection)

参数说明:

  • sender:信号的发送者。
  • signal:发送的信号(信号函数)。
  • receiver:信号的接受者。
  • method:接受信号的槽函数。
  • type:用于指定关联的方式,默认的关联方式为Qt::AutoConnection,通常不需要手动设置。

2.2 connect函数的简单使用

connect函数的简单使用,我们要实现的功能就是点击按钮使得按钮上的Hello World变成Hello Yui.

2.2.1 图形化方式

image.png
开始编辑处理代码:
widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{ui->pushButton->setText("Hello Yui");
}

Qt_hello_yui.gif

2.2.2 代码方式

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);button = new QPushButton(this);button->setText("Hello World");button->move(200,200);connect(button,&QPushButton::clicked,this,&Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{button->setText("Hello Yui");
}

Qt_hello_yui_code.gif

2.3 查看内置信号和槽

系统自带的信号和槽通常通过Qt的帮助文档来查询。
就比如我们要查看按钮的信号,在帮助文档中输入QPushButton
image.png
然后再去文档中寻找signals
如果没有找到,继续去父类中查找。比如QPushButton的父类QAbstractButton

image.png
image.png

3. 知识补充——connect的参数类型问题

connect(const QObject* sender,const char* singal,const QObject* receiver,const char* method,Qt::ConnectionType type = Qt::AutoConnection)

可以看到的是singalmethod的类型都是char* ,但是我们传递的却是函数指针,就比如method的函数指针类型是void(*)()这可对不上,C++可不允许你使用两个不同的指针类型相互赋值。那么这是怎么一回事呢?
以这个代码为例

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);button = new QPushButton(this);button->setText("Hello World");button->move(200,200);connect(button,&QPushButton::clicked,this,&Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{button->setText("Hello Yui");
}

现在的写法为

connect(button,&QPushButton::clicked,this,&Widget::handle);

但是在Qt5以前的写法为:

connect(button,SIGNAL(&QPushButton::clicked),this,SLOT(&Widget::handle));

Qt5开始,对上述的写法做出了简化,不需要写SIGNAL和SLOT宏了,给connect提供了重载版本,在重载版本中,第二个参数和第四个参数成了泛型参数,允许我们传入任意类型的函数指针了。
按住ctrl加鼠标左键跳转
image.png
此时的connect函数就带有一定的参数检查功能,
如果你传入的第一个参数和第二个参数不匹配,或者第三个参数和第四个参数不匹配,代码会编译出错,这里用到了类型萃取。


往期文章:
【Qt】初始项目代码解释-CSDN博客
【Qt】HelloWorld程序-CSDN博客

http://www.dtcms.com/wzjs/821157.html

相关文章:

  • 评测网站做的那些条形图Wordpress主题 魔兽
  • 长春网站优化体验万网 公司网站链接
  • 个人网站做电商保险网站排名
  • 站群推广百度指数的主要功能有
  • 禅城网站建设费用wordpress 集群
  • 企业网站管理系统怎么修改密码wordpress弹幕播放
  • 濮阳市做网站公司昆山做网站优化
  • 建立网站的主机方式网站备案承若怎么写
  • 互联网企业网站设计南京seo培训
  • 阳江企业网站药店网站建设相关费用
  • 网站建设电脑端手机端wordpress phpmyadmin插件
  • 深圳公司社保网站佛山营销型网站建设
  • 门户网站的建立建设品牌网站
  • 国外建设网站流程网站备案文件
  • 做图库网站需要多少钱个人网页设计与制作论文结束语
  • 乐山网站建设培训学校中国怎么样做跨境网站
  • 无锡网站怎么做个人论坛类网站
  • 工信部网站备案查不到建筑人才网代码
  • 网站式登录页面模板下载地址如何做本地网站
  • 宁夏公路建设局网站wordpress 七牛上传插件
  • 网站建设原则太原推广型网站开发
  • 网页设计与网站建设期末考试题灵感设计网站
  • 一个网站的主题和设计风格南昌做网站后台投票
  • 榆林网站建设价格wordpress小工具失效
  • 深圳专业商城网站设计巩义网站建设案件数据
  • 学做网站用什么软件东莞寮步在哪里
  • 有没有跟一起做网店一样的网站网站建设发货流程图
  • 2015做网站前景为什么不禁止营销号
  • 化妆品网站程序专业 网站设计公司价格
  • 网站建设经费估算南阳网站改版