c++ qt--信号与槽(二) (第四部分)

c++ qt–信号与槽(二) (第四部分)

信号与槽的关系

1.一对一

2.一对多

3.多对一

4.多对多

还可以进行传递 信号->信号->槽

一个信号控制多个槽的例子(通过水平滑块控制两个组件)

1.应用的组件

在这里插入图片描述

注意这里最下面的组件进行了一些调整 如下

在这里插入图片描述

2.两个槽函数的声明和定义

1.声明

在mainwindow.h的类中写下面代码

public slots://槽函数的访问修饰符可以是public,protected或者private,三种访问修饰符都可以,不影响槽函数的使用void slots_time(int);void slots_progress(int);
2.定义

在mainwindow.cpp中写下面代码

void MainWindow::slots_time(int x)
{//QTime 是qt里写好的时间的类QTime time(0,0);//零点time=time.addSecs(6*6*24*x);//增加秒数ui->timeEdit->setTime(time);//将更新后的时间,设置到组件上}void MainWindow::slots_progress(int x)
{ui->progressBar->setValue(x);//进度条设置值}

3.绑定链接

在mainwindow.cpp的构造函数中写下面代码

    ui->horizontalSlider->setRange(0,100);//设置水平滑块的范围ui->timeEdit->setDisplayFormat("hh-mm:ss");//设置显示的格式connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_progress(int)));if(pun){qDebug()<<"成功";}else{qDebug()<<"失败";}

多个信号控制一个槽的例子(两个组件控制一个界面是否显示)

1.应用的组件

在这里插入图片描述

2.槽函数

1.声明

在dialog.h的类中写下面代码(这是上一篇博客创建的)

public slots:void slots_IsLIght();
2.定义

在dialog.cpp中写下面代码(这是上一篇博客创建的)

void Dialog::slots_IsLIght()
{//    if(isVisible()){//        hide();//    }//    else{//        show();//    }//上面的代码可以写成三目运算符isVisible()?hide():show();//三目运算符}

3.绑定连接

在main.cpp中写下面代码

QObject::connect(w.Getui()->pb_door,SIGNAL(clicked()),&dia,SLOT(slots_IsLIght()));
QObject::connect(w.Getui()->pb_bed,SIGNAL(clicked()),&dia,SLOT(slots_IsLIght()));

信号->信号->槽的例子()

1.应用的组件

在这里插入图片描述

在这里插入图片描述

2.声明信号

在mainwindow.h的类中写下面代码

signals://声明信号的关键字void signals_XinHao(int);//仅声明即可

3.连接两个信号

在mainwindow.cpp的构造函数中写下面代码

connect(ui->spinBox,SIGNAL(valueChanged(int)),this,SIGNAL(signals_XinHao(int)));

4.槽函数

1.声明

在dialog.h的类中写下面代码(这是上一篇博客创建的)

public slots:void slots_Lcd(int);
};
2.定义

在dialog.cpp中写下面代码(这是上一篇博客创建的)

void Dialog::slots_Lcd(int num)
{ui->lcdNumber->display(num);//显示数字
}

5.绑定连接信号和槽函数

在main.cpp中写下面代码

QObject::connect(&w,SIGNAL(signals_XinHao(int)),&dia,SLOT(slots_Lcd(int)));

将信号与槽断开连接

1.应用的组件

在这里插入图片描述

通过”check’ box“的组件将滑块与滑块下面两个组件的连接断开

2.转到槽函数(这里用qt自带的功能创建槽函数)

定义

在mainwindow.cpp中写下面代码

//原连接
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));
pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_progress(int)));//
//pun用来接返回值//看当前连接信息是否成功
if(pun){qDebug()<<"成功";}else{qDebug()<<"失败";}//pun是在在mainwindow.cpp类中进行声明,声明如下
/*punlic:
QMetaObject::Connection pun;
*///进行断开连接
void MainWindow::on_cb_cancelValue_stateChanged(int arg1)
{if(arg1==Qt::CheckState::Checked){//取消连接disconnect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));}else{//重新连接connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));}
}void MainWindow::on_cb_cancelProgress_stateChanged(int arg1)
{if(arg1==Qt::CheckState::Checked){//取消连接disconnect(pun);}else{pun=connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(slots_time(int)));}
}

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

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

相关文章

【Qt学习】06:事件与事件过滤器

OVERVIEW 事件与事件过滤器一、事件1.鼠标事件创建子类MyLabel重写鼠标事件提升Label控件为MyLabel 2.定时器事件timerEventQTimer 3.事件分发器&#xff08;event函数&#xff09;event函数重写event函数深入 二、事件过滤器1.事件过滤器2.事件处理的五个层次 事件与事件过滤器…

Tomcat和Servlet基础知识的讲解(JavaEE初阶系列16)

目录 前言&#xff1a; 1.Tomcat 1.1Tomcat是什么 1.2下载安装 2.Servlet 2.1什么是Servlet 2.2使用Servlet来编写一个“hello world” 1.2.1创建项目&#xff08;Maven&#xff09; 1.2.2引入依赖&#xff08;Servlet&#xff09; 1.2.3创建目录&#xff08;webapp&a…

VR法治警示教育:情景式课堂增强教育效果

VR法治警示教育平台是一款基于虚拟现实技术的在线教育平台&#xff0c;旨在通过模拟真实场景和互动体验&#xff0c;向公众普及法律知识&#xff0c;提高公民的法律意识和素养。该平台采用先进的虚拟现实技术&#xff0c;将用户带入一个逼真的仿真环境&#xff0c;让用户身临其…

python systemrdl 使用实例

今天来看一个具体实例&#xff0c;上一篇传送门&#xff1a;python SystemRDL 包介绍_Bug_Killer_Master的博客-CSDN博客 通常来说&#xff0c;我们验证过程用到的情况大多都是需要提取reg field的路径以及reset 值等信息&#xff0c;所以比较常见的一种方法就是先把rdl compil…

简析SCTP开发指南

目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**&#xff1a;2. **建立Socket**&#xff1a;3. **绑定和监听**&#xff1a;4. **接收和发送数据**&#xff1a;5. **关闭连接**&#xff1a; 三、 C语言实现SCTP3.1SCTP客户端代码&#xff1a;3.2 SCTP服务器端代码&a…

识别图片中的文字

前言 PearOCR 是一款免费无限制网页版文字识别工具。 优点如下&#xff1a; 免费&#xff1a;完全免费&#xff0c;没有任何次数、大小限制&#xff0c;可以无限使用&#xff1b; 安全&#xff1a;全部数据本地运算&#xff0c;所有图片均不会被上传&#xff1b; 智能&#xf…

SQL注入之HTTP头部注入

文章目录 cookie注入练习获取数据库名称获取版本号 base64注入练习获取数据库名称获取版本号 user-agent注入练习获取数据库名称获取版本号 cookie注入练习 向服务器传参三大基本方法:GPC GET方法&#xff0c;参数在URL中 POST&#xff0c;参数在body中 COOKIE&#xff0c;参数…

OpenSIPS 通话中 UPDATE 请求导致没有声音问题

文章目录 1. 问题现象2. 抓包排查3. 问题分析及解决方案 1. 问题现象 在 SIP 应用的开发中&#xff0c;通话一端听不到声音是比较常见的问题。一般来说&#xff0c;没有声音意味着 RTP 传输存在障碍&#xff0c;追根究底就是网络不通或者端口未开放等原因。但在实践中&#xf…

数据结构——图

文章目录 图的基本概念顶点边度无向图和有向图无权图和带权图 图的存储邻接矩阵存储邻接表存储 图的搜索广度优先搜索深度优先搜索 图是一种较为复杂的非线性结构。 为啥说其较为复杂呢&#xff1f; 根据前面的内容&#xff0c;我们知道&#xff1a; 线性数据结构的元素满足唯…

nodejs

文章目录 一、nodejs1.1、npm配置命令别名 一、nodejs 1.1、npm配置命令别名 我们可以使用“node index.js”的方式运行代码 也可以利用npm配置别名的方式运行代码 在package.json中配置别名&#xff0c;利用“npm run 别名”也可以运行 start是特殊的&#xff0c;可以“npm r…

ssm+Vue.js在线购物系统源码和论文

ssmVue.js在线购物系统源码和论文049 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势…

GPT---1234

GPT:《Improving Language Understanding by Generative Pre-Training》 下载地址:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdfhttps://cdn.openai.com/research-covers/language-unsupervised/language_understa…

保姆级使用vmware安装Ubuntu-server版

保姆级VMware安装Ubuntu20服务器版 文章目录 保姆级VMware安装Ubuntu20服务器版前期准备一、安装vmware二、下载Ubuntu镜像 VMware安装Ubuntu201. 启动Workstation Pro或者Workstation Player,进入软件后新建一个虚拟机2. 进入引导界面选择默认的即可3. 点击下一步即可4. 选择操…

VR全景加盟会遇到哪些问题?全景平台会提供什么?

想创业&#xff0c;你是否也遇到这些问题呢&#xff1f;我是外行怎么办&#xff1f;没有团队怎么办&#xff1f;项目回本周期快吗&#xff1f;项目靠谱吗&#xff1f;加盟平台可信吗&#xff1f;等等这类疑问。近几年&#xff0c;VR产业发展迅速&#xff0c;尤其是VR全景项目在…

[ VMware 虚拟机 ] 启动不了图形界面,报 “The system is running in low-graphics mode” 错误

文章目录 问题现象异常原因解决方案 问题现象 在启动虚拟机的时候&#xff0c;不能正常的进入图形界面&#xff0c;报 “The system is running in low-graphics mode” 错误。 异常原因 启动界面的xorg.conf文件失败并删除。 解决方案 1、点击异常界面上的 “ok”后&…

编码基础一:侵入式链表

一、简介概述 1、普通链表数据结构 每个节点的next指针指向下一个节点的首地址。这样会有如下的限制&#xff1a; 一条链表上的所有节点的数据类型需要完全一致。对某条链表的操作如插入&#xff0c;删除等只能对这种类型的链表进行操作&#xff0c;如果链表的类型换了&#…

静态代码扫描持续构建(Jenkins)

前提条件 已正确安装、配置Jenkins环境&#xff0c;并装有 Gradle 插件、HTML 插件、SVN 插件等。如下图所示&#xff1a; 已正确安装、配置android sdk&#xff0c;在cmd窗口输入命令“android -h”,回车 配置步骤 打开Jenkins&#xff0c;新建一个job&#xff0c;输入项目…

Discuz!论坛发帖标题字数限制80字符可以修改吗?修改发帖标题字数的方法

Discuz!论坛发帖标题字数限制80字符修改方法 1.数据库修改2.修改JS验证字符数文件3.修改模板中写死的字符限制数4.修改函数验证文件5.修改语言包文件6.更新缓存 Discuz X3.4论坛网站帖子标题字数限制80字符&#xff0c;当我们想使用长标题的时候就得一删再删&#xff0c;实在是…