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

c++ qt--信号与槽(一) (第三部分)

c++ qt–信号与槽(一) (第三部分)

一.用qt自带的方法添加信号槽

1.第一种

1.如何添加

在这里插入图片描述

2.在何处进行绑定

在这里插入图片描述

2.第二种

1.如何添加

在这里插入图片描述

2.在何处进行绑定

在这里插入图片描述

而且会在mainwindow.h中添加槽函数的声明,在mainwindow.cpp中添加槽函数的定义
在mainwindow.h中槽函数的声明

在这里插入图片描述

在mainwindow.cpp中槽函数的定义

在这里插入图片描述

注意:这里的输出是后添加的,测试是否能正常运行的

槽函数是根据名字来进行匹配的,如果将上面的槽函数名字进行更改,就无法调用槽函数了

二.自定义槽函数

在这里插入图片描述

这里我们放入一个新组件用来控制是否能使用“退出主窗口,程序退出”这个组件

1.声明

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

//slots:qt 中修饰槽函数的关键字
private slots:void slots_isButtonDisable(int);//槽函数:返回类型一般都是void,参数列表要和信号保持一致

2.定义

在mainwindow.cpp源文件中写下面代码

void MainWindow::slots_isButtonDisable(int a)
{qDebug()<<a;if(a==0){//不勾选ui->pushButton->setDisabled(false);//设置按钮是否可用}else{//勾选ui->pushButton->setDisabled(true);}}

3.绑定连接(在使用前进行绑定连接即可)

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

//绑定连接
//SIGNAL:指定信号函数的宏,宏参数:信号名和参数列表,如果有参数名字一定要去掉
//SLOT:指定槽函数的宏,宏函数:槽名和参数列表,如果有形参名字一定要去掉
connect(ui->checkBox/*信号的发出者*/,SIGNAL(stateChanged(int)),this/*接收者*/,SLOT(slots_isButtonDisable(int)));

4.设置三态

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

//设置 checkbox多态
ui->checkBox->setTristate(true);//设置之后就有了三种状态选,不选,半选。设置之前只有两种状态,选和不选

三.练习(自定义槽函数)

1.目标

将上一篇博客的弹出框的上的按钮进行改变变成中文,然后根据按下的按键进行相应的操作

2.声明

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

public:QMessageBox m_box;//声明一个弹出框QPushButton *POK;//接按下确定的按键信息QPushButton *PCANCEL;//接按下否定的按键信息

3.对弹出框进行操作

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

m_box.setWindowTitle("提示");//设置标题
m_box.setText("这是我的MessageBox");//设置文本
POK=m_box.addButton("确定",QMessageBox::YesRole);//添加按钮
PCANCEL=m_box.addButton("取消",QMessageBox::NoRole);//添加按钮

4.显示弹出框

在mainwindow.cpp源文件中写下面代码

void MainWindow::on_pb2_clicked()
{qDebug()<<__FUNCTION__;m_box.show();//默认不显示,所以手动调一下show函数
}

如果按下了下面这个按键,就显示弹出框

在这里插入图片描述

5.手写槽函数

1.声明

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

void slots_buttonClicked(QAbstractButton* button);

2.定义

在mainwindow.cpp源文件中写下面代码

void MainWindow::slots_buttonClicked(QAbstractButton* button){if(button==POK){qDebug()<<"确定";}else if(button==PCANCEL){qDebug()<<"取消";}
}

6.进行连接(在使用前进行绑定连接即可)

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

//绑定连接
connect(&m_box,SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(slots_buttonClicked(QAbstractButton*)));

四.自定义信号

1.声明

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

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

2.发射信号

点击下面组件进行发射信号

在这里插入图片描述

在槽函数中发射信号

void MainWindow::on_pushButton_2_clicked()
{int a=1;//发射我的自定义信号//emit是一个宏,告诉别人这是一个发射信号emit signals_sendDate(a,1,"你去做一个加法");
}

3.接受信号

1.新创建一个窗口(对话框窗口)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.创建窗口(定义一个对象)

在main.cpp写下面代码

Dialog dia;
dia.show();

3.槽函数

1.声明槽函数

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

public slots:void slots_recvData(int,int,QString);

2.定义槽函数

在dialog.cpp中写下面代码

void Dialog::slots_recvData(int a,int b,QString s){int sum=a+b;QString str=s+" ,结果为: "+QString::number(sum);//拼接字符串ui->label->setText(str);//设置文本
}

4.进行绑定连接(在使用前进行绑定连接即可)

在main.cpp中写下面代码

QObject::connect(&w,SIGNAL(signals_sendDate(int,int,QString)),&dia,SLOT(slots_recvData(int,int,QString)));

相关文章:

c++ qt--信号与槽(一) (第三部分)

c qt–信号与槽(一) &#xff08;第三部分&#xff09; 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明&#xff0c;在mainwindow.cpp中添加槽函数的定义 在mainwindow…...

LLM学习《Prompt Engineering for Developer》

Prompt 如何构造好的Prompt 分割符&#xff1a;分隔符就像是 Prompt 中的墙&#xff0c;将不同的指令、上下文、输入隔开&#xff0c;避免意外的混淆。你可以选择用 &#xff0c;“”"&#xff0c;< >&#xff0c; &#xff0c;: 等做分隔符&#xff0c;只要能明确…...

nginx-获取客户端IP地址

上有服务器与客户端中间是有nginx代理服务器的&#xff0c;上游服务器如何获取客户端真实ip地址&#xff1f; nginx代理服务器设置X-Forwarded-For的header参数&#xff0c;代理服务器通过remote_addr获取客户端ip地址&#xff0c;将ip地址写入nginx代理服务器的X-Forwarded-Fo…...

Redis 高可用之集群搭建和数据分片

Redis 高可用之集群搭建和数据分片 一、简介1. Redis 集群&#xff1a;2. 集群搭建&#xff1a; 二、Redis 集群搭建1. 单机 Redis 升级为 Redis Clustera. 搭建方法b. 搭建方式说明 2. 环境准备3. 配置修改4. 启动集群 三、Redis数据分片的实现Redis数据分片概念说明数据分片的…...

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能&#xff1f;2、Redis实现计数器的原理&#xff08;1&#xff09;使用INCR命令实现计数器&#xff08;2&#xff09;使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…...

Linux系统编程--文件编程--打开创建文件

创建文件需要包含以下3个头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 打开、创建文件有以下3个API open的返回值——文件描述符&#xff08;索引作用&#xff09;&#xff0c;是一个小的非负整数 int open(const char*pathn…...

http协议与apache

http概念&#xff1a; 互联网&#xff1a;是网络的网络&#xff0c;是所有类型网络的母集 因特网&#xff1a;世界上最大的互联网网络。即因特网概念从属于互联网概念 万维网&#xff1a;万维网并非某种特殊的计算机网络&#xff0c;是一个大规模的、联机式的信息贮藏库&…...

搜索二叉树的算法解析与实例演示

目录 一.搜索二叉树的特性与实现1.特点2.实现二.搜索二叉树的性能 一.搜索二叉树的特性与实现 1.特点 二叉搜索树是特殊的二叉树&#xff0c;它有着更严格的数据结构特点&#xff1a; &#xff08;1&#xff09;非空左子树的所有键值小于其根结点的键值。 &#xff08;2&…...

研磨设计模式day13组合模式

目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…...

Linux命令(73)之zip

linux命令之zip 1.zip介绍 linux命令zip是用来压缩文件及解压缩文件名称后缀为".zip"的文件 2.zip用法 zip [参数] filename[.zip] zip常用参数 参数说明-r压缩递归处理-d从压缩文件内删除指定的文件-T检查备份文件是否正确无误-u更换较新的文件到压缩文件内-q不…...

深入理解Reactor模型的原理与应用

1、什么是Reactor模型 Reactor意思是“反应堆”&#xff0c;是一种事件驱动机制。 和普通函数调用的不同之处在于&#xff1a;应用程序不是主动的调用某个 API 完成处理&#xff0c;而是恰恰相反&#xff0c;Reactor逆置了事件处理流程&#xff0c;应用程序需要提供相应的接口并…...

微信小程序开发的投票评选系统设计与实现

摘要 越来越多信息化融入到我们生活当中的同时&#xff0c;也在改变着我们的生活和学习方式&#xff0c;当然&#xff0c;变化最明显的除了我们普通民众之外&#xff0c;要数高校学生的生活方式以及校园信息化的变革。智慧是改变生活和生产的一种来源&#xff0c;那么智慧的体…...

【校招VIP】算法考点之堆排

考点介绍&#xff1a; 排序算法属于数据结构和算法的基础内容&#xff0c;并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值&#xff0c;但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶&#xff0c;取得 n…...

关于yarn安装时报“node“ is incompatible with this module的解决办法

前提&#xff1a; 在用vue写一个h5页面时&#xff0c;当在用yarn安装时&#xff0c;提示如下错误&#xff1a; The engine “node” is incompatible with this module. Expected version "^14.18.0 || ^16.14.0 || >18. 解决办法 我是使用命令忽略错误&#xff1a…...

开源利器推荐:美团动态线程池框架的接入分享及效果展示

前言 蛮早前有些过关于线程池的使用及参数的一些参考配置&#xff0c;有兴趣的可以翻看以前的博文&#xff0c;但终究无法解决线程池的动态监控和实时修改。 以前读过美团早期发布的动态线程池框架的思路相关文章&#xff0c;但想要独自实现不是一件容易的事。 去年&#xff0c…...

Linux目录结构与文件管理 (02)(四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、查看文件内容 二、创建文件 三、删除文件 四、 移动文件 五、复制文件 六、编辑文件内容 总结 前言 今天是在昨天的基础上继续学习&#xff0c;主要…...

对1GHz脉冲多普勒雷达进行快速和慢速处理生成5个移动目标的距离多普勒图研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

uni.uploadFile上传 PHP接收不到

开始这样&#xff0c;后端$file $request->file(file);接收不到 数据跑到param中去了 去掉Content-Type&#xff0c;就能接收到了 param只剩下...

2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…...

Netty简易聊天室

文章目录 本文目的参考说明环境说明maven依赖日志配置单元测试 功能介绍开发步骤 本文目的 通过一个简易的聊天室案例&#xff0c;讲述Netty的基本使用。同时分享案例代码。项目中用到了log4j2&#xff0c;junit5&#xff0c;同时分享这些基础组件的使用。项目中用到了awt&…...

Flutter Cannot run with sound null safety, because the following dependencies

flutter sdk 版本升级到2.0或者更高的版本后&#xff0c;运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…...

利用改进的遗传算法(种群隔离与个体迁移)mpi并行解决tsp问题

序 关于tsp问题的概述以及如何使用遗传算法进行求解已经在上一篇文章中说明了&#xff1a;遗传算法解决TSP问题. 但是&#xff0c;作为一种演化算法&#xff0c;遗传算法还存在着许多问题&#xff0c;比如早熟的情况&#xff0c;很容易在算法前期就已经收敛了&#xff0c;大量…...

【C++】—— C++11之线程库

前言&#xff1a; 在本期&#xff0c;我将给大家介绍的是 C11 中新引进的知识&#xff0c;即关于线程库的相关知识。 目录 &#xff08;一&#xff09;线程库的介绍 1、线程库的由来 2、线程库的简单介绍 &#xff08;二&#xff09;线程函数参数 &#xff08;三&#xf…...

前端面试:【性能优化】前端缓存、CDN、懒加载和预加载

亲爱的前端开发者&#xff0c;Web性能对用户体验至关重要。如果你想让你的网站更快、更具吸引力&#xff0c;就需要关注前端性能优化。在这篇文章中&#xff0c;我们将深入探讨四个关键的性能优化策略&#xff1a;前端缓存、CDN&#xff08;内容分发网络&#xff09;、懒加载和…...

民族传统文化分享系统uniapp 微信小程序

管理员、用户可通过Android系统手机打开系统&#xff0c;注册登录后可进行管理员后端&#xff1b;首页、个人中心、用户管理、知识分类管理、知识资源管理、用户分享管理、意见反馈、系统管理&#xff0c;用户前端&#xff1b;首页、知识资源、用户分享、我的等。 本系统的使用…...

netty(二):NIO——处理可写事件

处理可写事件 什么情况下需要注册可写事件&#xff1f; 在服务端一次性无法把数据发送完的情况下&#xff0c;需要注册可写事件 服务端一次性是否能够把数据全部发送完成取决于服务端的缓冲区大小&#xff0c;该缓冲区不受程序控制 注册可写事件的步骤 判断ByteBuffer是否仍…...

PHP基本语法解析与应用指南

PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛应用的开源脚本语言&#xff0c;特别适用于Web开发。本文将深入探讨PHP的基本语法&#xff0c;包括变量、数据类型、运算符、控制流等方面的内容。我们将详细介绍每个主题的基本概念、语法规则和常见应用&#xff…...

ICS PA1

ICS PA1 init.shmake 编译加速ISA计算机是个状态机程序是个状态机准备第一个客户程序parse_argsinit_randinit_loginit_meminit_isa load_img剩余的初始化工作运行第一个客户程序调试&#xff1a;零断点TUI 基础设施单步执行打印寄存器状态扫描内存 表达式求值词法分析递归求值…...

Java学数据结构(4)——散列表Hash table 散列函数 哈希冲突

目录 引出散列表Hash table关键字Key和散列函数(hash function)散列函数解决collision哈希冲突&#xff08;碰撞&#xff09;分离链接法(separate chaining)探测散列表(probing hash table)双散列(double hashing) Java标准库中的散列表总结 引出 1.散列表&#xff0c;key&…...

OVRL-V2: A simple state-of-art baseline for IMAGENAV and OBJECTNAV 论文阅读

论文信息 题目&#xff1a;OVRL-V2: A simple state-of-art baseline for IMAGENAV and OBJECTNAV 作者:Karmesh Yadav&#xff0c; Arjun Majumdar&#xff0c; Ram Ramrakhya 来源&#xff1a;arxiv 时间&#xff1a;2023 代码地址&#xff1a; https://github.com/ykarmesh…...

建设银陕西省分行网站/跟我学seo

scandir方法返回了一个DirEntry迭代器对象&#xff0c;它非常轻巧方便&#xff0c;并且能告诉你迭代文件的路径。之前案例中&#xff0c;我们检查了entry是一个文件或者是一个文件夹&#xff0c;与此同时&#xff0c;我们添加它的路径到列表中。 在 Python 3.5版本中&#xff…...

工商网站如何做企业增资/北京网站优化怎么样

一 故障现象&#xff1a;硬盘灯告警二 故障分析&#xff1a;硬盘fault三 处理过程&#xff1a;现场查看发现主机配置两块300GB硬盘&#xff0c;且系统正常运行。判断主机应该做了riad 1&#xff08;fdisk -l命令显示逻辑盘的大小为300GB&#xff09;在线更换硬盘more /var/log/…...

权威的南昌网站设计/口碑营销

约瑟夫环进阶&#xff1a; 2020个数 围成一个圈&#xff0c;从第一个开始&#xff0c;每过三个&#xff0c;删除三个&#xff0c;例&#xff1a;从1开始&#xff0c;删除2&#xff0c;3,4。求出最后剩下的数是多少&#xff1f; 代码如下&#xff1a; public static void main…...

最新新闻热点及观点/电子商务沙盘seo关键词

set&#xff08;集合&#xff09; 直接创建一个空集合set_empty set() print(set_empty) # set() 根据参数创建# 根据参数 set_argument set(42,345,ry) print(set_argument) # 这样会报错,因为set只允许有一个参数 根据列表来创建set_list set([11,11,45,11,ee]) print(set…...

公司商城网站建设/百度指数的搜索指数

项目名&#xff1a;俄罗斯方块 组名&#xff1a;新蜂 测试者&#xff1a;韩媛媛&#xff08;nice&#xff01;团队&#xff09; 用户需求规格说明书URL&#xff1a;http://www.cnblogs.com/Boxer1994/p/6084035.html 组长博客URL&#xff1a;http://www.cnblogs.com/Boxer1994/…...

云服务器哪家好/百度seo关键词排名价格

一.对象使用的高级 1,对象的key为字符串类型, value为任意类型 js var obj {name: "obj" } // 删除 delete obj.name // 添加 obj.age 18 // 如果age的key已存在就是修改值, 不存在就是添加键值对, 添加的key任意 // 注: 获取的页面元素(标签对象)也可以任意添加/…...