QT信号和槽函数学习笔记

//connect 函数有4个参数 分别是 发送者 信号。接受者 ,槽
//connect(sender,signal,receiver,slot)
/*
* 信号和槽
* 信号 就是一个普通的函数 定义信号的时候需要在函数前面加上signals: ,不需要实现
* 槽 函数 在QT5中科院是类的任意成员函数,静态函数,全局函数 lambda 表达式
* QT4中槽函数的定义 public slots: void send();
* 信号和槽是可以自定义的
* 信号和槽是没有返回值的
* 信号和槽函数可以带参数
* 信号和槽函数的参数必须要一一对应的
* 信号和槽函数的参数可以是不一样的但是槽函数的参数个数可以少于信号的参数个数
* 信号槽函数传参数的数据类型:
* 先看QT4的
* connect(sender,SIGNAL(sig1(int,double,Qstring)),receiver,SLOT(slot1(int,double,Qstring)));
* SIGNAL 和SLOT 是两个宏 将函数转换成字符串
* 缺点 编译时不会做错误检查
* QT5中
* connect(sender,&sender::sig1,receiver,&receiver::slot1);
*/

//创建一个按钮对象
QPushButton * Lpbutton =new QPushButton;
//将按钮添加到主窗口中 设置按钮的父窗口句柄
Lpbutton->setParent(this);
//设置按钮的标题title
Lpbutton->setText("关闭窗口");
//信号和槽的简单实现
//qt5的方式
// connect(Lpbutton,&QPushButton::clicked,this,&MyWidget::close);
//Qt4的方式
connect(Lpbutton,SIGNAL(clicked(bool)),this,SLOT(close()));

自定义信号和槽函数的使用

创建两个类 一个报纸类一个读者类
报纸类先声明 信号和发送信号的函数
//然后我们定义一个发送信号的函数
void SendSignals();

signals:
//自定义一个信号
void signalFunc(); //没有返回值 不需要实现
然后 我们来实现发送信号的函数
void NewSpaper::SendSignals()
{
//这个函数的主要作用就是发送信号
//在QT中我们要发送信号的话需要用到关键字emit信号的函数名
emit signalFunc();
}
下面我们再来处理读者类的槽函数

public slots:
//读者类中我们需要自定义一个槽函数
void SlostFunc();
实现槽函数功能
void Reader::SlostFunc()
{
//我们来实现以下槽函数 这里需要用到 控制台打印调试信息所以我们需要用到
//一个QDebug类
qDebug() <<"我要去买报纸";
}
连接信号和槽函数
//创建读者类和报纸类
NewSpaper* NewSpa1 =new NewSpaper;
Reader* Read1 = new Reader;
//连接信号和槽
connect(NewSpa1,&NewSpaper::signalFunc,Read1,&Reader::SlostFunc);
//然后是发送信号
NewSpa1->SendSignals();

当然信号和槽函数在c++中是一个普通的函数 它也存在重载机制
下面我们来重载信号和槽函数
重载报纸的构造函数
explicit NewSpaper(QString name,QObject *parent = 0);
//重载信号
void signalFunc(QString name); //没有返回值 不需要实现
NewSpaper::NewSpaper(QString name,QObject *parent) : QObject(parent)
{
Qs_name = name;
}
void NewSpaper::SendSignals()
{
//这个函数的主要作用就是发送信号
//在QT中我们要发送信号的话需要用到关键字emit信号的函数名
emit signalFunc();
emit signalFunc(Qs_name);

}
重载读者的槽函数
//重载槽函数
void SlostFunc(QString name);
//重载槽函数
void Reader::SlostFunc(QString name)
{
qDebug() <<"我要去买:"<<name.toStdString().c_str();
}
Reader* Read1 = new Reader;
NewSpaper* NewSpa2 =new NewSpaper("人民日报"); //重载信号函数
//连接信号和槽
// connect(NewSpa1,&NewSpaper::signalFunc,Read1,&Reader::SlostFunc);
//QT4方式实现重载信号槽函数的连接
// connect(NewSpa2,SIGNAL(signalFunc(QString)),Read1,SLOT(SlostFunc(QString)));
//QT5方式实现重载信号槽函数的连接 主要是用到类型转换 函数指针转换即可
connect(NewSpa2,static_cast<void (NewSpaper::*)(QString)>(&NewSpaper::signalFunc),Read1,static_cast<void (Reader::*)(QString)>(&Reader::SlostFunc));
//然后是发送信号
NewSpa2->SendSignals();

QT中信号和槽的扩展
//信号和槽的扩展
/*
* 一个信号可以连接多个槽函数
* 槽函数的执行顺序是随机的无法控制
* 一个槽函数可以同时被多个信号连接
* 槽函数可以使用lambda表达式
* 信号可以连接信号可以接力
* 先连接第一个信号槽
* connect(NewSpa2,static_cast<void (NewSpaper::*)()>(&NewSpaper::signalFunc),Read1,static_cast<void (Reader::*)()>(&Reader::SlostFunc));
* 然后再连接第二个信号槽
* connect(Lpbutton,&QPushButton::clicked,NewSpa2,static_cast<void (NewSpaper::*)()>(&NewSpaper::signalFunc));
* 信号槽连接之后可以被断开。可以使用disconnect函数断开
*
*/

转载于:https://www.cnblogs.com/guolongzheng/p/7726338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库和Webapp安全

威胁模型 这是根据我网站上的快速参考页松散地讨论数据库和Webapp安全的问题。 该页面变得笨拙&#xff0c;并且使读者无法轻松地与我或其他人进行交互。 威胁模型 所有安全分析都必须从检查威胁模型开始。 威胁模型要求您回答四个问题&#xff1a; 我要保护的是什么&#…

note同步不及时 one_一辆理想ONE又“跪了”?理想官方紧急发文回应

汽车行业关注(autochat.com.cn)10月16日报道——10月15日&#xff0c;有网友在社交媒体上发布视频&#xff0c;从视频可以看到&#xff0c;一辆理想ONE在遭遇事故后&#xff0c;左前轮脱落在车外疑似断轴,从视频未能判定是断轴引起的事故&#xff0c;还是事故引起的断轴。针对该…

C语言连续多个空格合并一个,C语言合并连续空格

一开始自己写的&#xff1a;a&#xff1a;#includemain(){int c;int state0;while (( cgetchar()) ! EOF) {if (c ){state1;continue;}if (state){state0;putchar( );putchar(c);}elseputchar(c);}}网上搜的&#xff1a;b:#include #define NONBLANK avoid main(){int c , last…

Skywalking 中 Agent 自动同步配置源码解析

文章目录 前言正文实现架构实现模型OAP 同步 ApolloConfigWatcherRegisterConfigChangeWatcher Agent 侧 前言 本文代码 OAP 基于 v9.7&#xff0c;Java Agent 基于 v9.1&#xff0c;配置中心使用 apollo。 看本文需要配合代码“食用”。 正文 Skywalking 中就使用这种模型…

华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...

点击蓝字关注我们-今天小盟带大家来讨论一下交换机与路由器在环路中的处理机制-01基础配置1---如图配置路由器各接口地址&#xff0c;AR-2为PC-1的网关路由器2---AR-1配置静态默认路由&#xff0c;下一跳地址指向AR-2&#xff1b;[AR-1]ip route-static 0.0.0.0 0 12.1.1.2AR-2…

IPC 进程间通信方式——信号量

信号量 本质上是共享资源的数目&#xff0c;用来控制对共享资源的访问。用于进程间的互斥和同步每种共享资源对应一个信号量&#xff0c;为了便于大量共享资源的操作引入了信号量集&#xff0c;可对多对信号量一次性操作。对信号量集中所有的操作可以要求全部成功&#xff0c;也…

css选择器的优先级

选择器的优先级表述为4个部分&#xff0c;用0,0,0,0表示。 !important--1,0,0,0行内样式ID选择器--0,1,0,0类选择器(例如,.example)、属性选择器&#xff08;例如, [type"radio"]&#xff09;或伪类&#xff08;例如, :hover&#xff09;--0,0,1,0元素&#xff08;例…

VisualVM介绍使用

1 打开VisualVM&#xff08;这个工具放在JDK安装目录的bin目录下&#xff0c;双击jvisualvm.exe即可打开&#xff09;&#xff0c;如下图所示 以VisualVM自身为例&#xff0c;VisualVM本身也是一个java程序&#xff0c;当然也而已用VisualVM来分析 2 概述页面主要显示程序…

c语言奇葩错误,6个奇葩的(hello,world)C语言版(转)

//下面的所有程序都可以在GCC下编译通过&#xff0c;只有最后一个需要动用C的编译器用才能编译通过。//程序功能输出 Hello,world!01.c#define _________ }#define ________ putchar#define _______ main#define _(a) ________(a);#define ______ _______(){#define __ _____…

Java功能的适用性

Java语言和标准库功能强大&#xff0c;但功能强大&#xff0c; 责任重大 。 一方面看到很多用户代码滥用或滥用稀有的Java功能&#xff0c;另一方面却完全忘记了大多数基本功能之后&#xff0c;我决定撰写此摘要。 这不是每个Java开发人员都应该探索&#xff0c;了解和使用的要…

台达b3伺服modbus通讯_【数控系统】台达伺服压机控制灵活 精准压合满足各种工序需求...

引言压机是一种利用压力改变工件形状的机械设备。随着制造业少量多样与客制化的日趋发展&#xff0c;压机的的优势逐渐显现&#xff0c;在汽车、五金与电子制造等产业中的应用不断增多。传统压机在使用操作上耗费人力并需要诸多压机元件才能完整运作&#xff0c;维修成本高&…

Binary Agents(二进制值转换字符串)

题目&#xff1a; 传入二进制字符串&#xff0c;翻译成英语句子并返回。 二进制字符串是以空格分隔的。 代码&#xff1a; 1 function binaryAgent(str) {2 var arr str.split( );3 for (var i 0; i < arr.length; i) {4 arr.splice(i,1,String.fromCharCode(BtoD…

我对CSS选择器的认识

我对CSS选择器的认识 一、简述   CSS选择器是对HTML元素进行选择的筛选条件&#xff0c;大概可以分为两类&#xff1a; 特征选择器——根据元素自身所具有的某种特征进行筛选&#xff0c;比如名称、ID、属性等&#xff1b;关系选择器——根据元素与其他元素的关系进行筛选&…

【USACO2006 Mar】滑雪缆车 skilift

【USACO2006 Mar】 滑雪缆车 skilift Time Limit 1000 msMemory Limit 131072 KBytes Description 科罗拉多州的罗恩打算为奶牛建造一个滑雪场&#xff0c;为此要在山上规划一条缆车线路。 整座山可以用一条折线来描述&#xff0c;该折线有N个拐点&#xff0c;起点是1&#xff…

yolov4Linux,基于Darknet的YOLOv4目标检测

目录一、Windows环境下的YOLOv4目标检测1、环境配置环境准备&#xff1a;Win10、CUDA10.1、cuDNN7.65、Visual Studio 2019、OpenCV 3.4(1)Visual Studio2019企业版安装(3)下载并安装CUDA10.1&#xff0c;下载安装cuDNN7.65对于cudnn直接将其解开压缩包&#xff0c;然后需要将b…

二元置信椭圆r语言_医学统计与R语言:圆形树状图(circular dendrogram)

微信公众号&#xff1a;医学统计与R语言如果你觉得对你有帮助&#xff0c;欢迎转发输入1&#xff1a; "ggraph")结果1&#xff1a; name 输入2&#xff1a; <- graph_from_data_frame(myedges1, verticesmyvertices,directed T)ggraph(mygraph, layout dend…

Java:检查器框架

我在JavaOne 2012上 了解的有趣的工具之一是Checker Framework 。 Checker Framework的网页之一 指出 &#xff0c;Checker Framework“增强了Java的类型系统&#xff0c;使其更强大&#xff0c;更有用”&#xff0c;从而使软件开发人员“能够检测并防止Java程序中的错误”。 查…

南岸焊接机器人厂_造船三部高效焊接工艺技术年鉴

为了提升公司高效焊自动化率&#xff0c;实现降本增效目标&#xff0c;造船事业三部积极响应公司领导号召&#xff0c;充分挖掘自身资源&#xff0c;2020年&#xff0c;在高效焊接技术、设备开发研究等方面&#xff0c;不断创新、敢于突破&#xff0c;获取了多项焊接新技术、新…

软工Hello World!团队第二周博客汇总

2017.10.20-2017.10.26 Scrum会议&#xff1a; 第一天&#xff1a;http://www.cnblogs.com/liusx0303/p/7704482.html 第二天&#xff1a;http://www.cnblogs.com/Mingezi/p/7709472.html 第三天&#xff1a;http://www.cnblogs.com/lynlyn/p/7717275.html 第四天&#xff1a;h…

什么是css sprites,如何使用?

css sprites&#xff1a;精灵图&#xff08;雪碧图&#xff09;&#xff1a;把一堆小图片整合在一张大图上&#xff0c;通过背景图片相关设置&#xff08;背景图片、背景图是否重复、背景图定位&#xff09;&#xff0c;显示图片&#xff0c;减轻服务器对图片的请求数量 优点&…