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)));

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

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

相关文章

【线性DP】模型总结(terse版)

【线性DP】模型总结 最长上升子序列 DP法 ​ dp[i]表示以i结尾的最长上升子序列的长度。 ​ 对于每个i&#xff0c;遍历j1~i-1,若a[j] < a[i], 则dp[i] max(dp[i], dp[j] 1); 二分法 ​ 可以优化时间复杂度。 ​ dp[]数组用来存储当前最长上升子序列。 ​ 若dp[]数…

伦敦银和伦敦金的区别

伦敦银河伦敦金并称贵金属交易市场的双璧&#xff0c;一般投资贵金属的投资者其实不是交易伦敦金就是交易伦敦银。相信经过一段时间的学习和投资&#xff0c;不少投资者都能分辨二者的区别。下面我们就来谈谈伦敦银和伦敦金有什么异同&#xff0c;他们在投资上是否有差别。 交易…

vue与vueComponent的关系

创建完组件之后 就会创建一个vueComponent构造函数 当注册成功这个组件并且在页面使用之后 就会创建一个vueComponent实例对象&#xff0c; 所以为了避免组件在使用过程中data对象中的值混乱 组件中的data要写成函数&#xff0c; 使得每次创建的组件实例对象都可以返回一…

Sui第四轮资助:16个团队瓜分

近日&#xff0c;Sui基金会公布了第四轮开发者资助名单&#xff0c;受助项目均是集中在DeFi、支付、基础设施、游戏、预言机等领域的Sui生态项目&#xff0c;他们是从2023年7月1日之前提交的申请中选出的。在此时间之后提交的任何项目目前正在审查中。 在前三轮资助中累积发放…

Linux存储学习笔记

相关文章 Linux 存储系列&#xff5c;请描述一下文件的 io 栈&#xff1f; - tcpisopen的文章 - 知乎 https://zhuanlan.zhihu.com/p/478443978 深入学习 Linux 操作系统的存储 IO 堆栈 - KaiwuDB的文章 - 知乎 https://zhuanlan.zhihu.com/p/636720297 linux存储栈概览 - st…

2023 Android 折叠屏适配详解,是时候点亮新技能了

自 2019 年三星发布了第一台&#xff08;柔宇不算&#xff09; Galaxy Z Fold 之后&#xff0c;Android 厂商们都陆续跟进了各自的可折叠方案&#xff0c;之后折叠屏手机市场一直保持快速增长&#xff0c;例如 2023 年上半年整体销量 227 万台&#xff0c;同比增长 102.0%。 虽…

pytorch 入门1-tensor 广播 view reshape

tensor 的四则运算broadcast import torch import numpy as np # 张量tensor 随机初始化 x torch.rand(4,3) print(x) y torch.randn(4,3) print(y)# 初始化全零 张量 a torch.zeros((4,4),dtypetorch.long) print(a) #初始化全一 张量 b torch.ones(4,4) print(b) c tor…

【tkinter 专栏】鼠标事件处理

文章目录 前言本章内容导图1. 鼠标事件2. 键盘事件3. 一次绑定多个事件处理程序4. 取消事件的绑定前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISBN: 9787569275001)所整理的 Python GUI 设计内容,结合笔者自身在项目实践过程中对于 GU…

Spring相关知识

0、Spring的核心就是AOP和IOC IOC&#xff1a; AOP&#xff1a;AOP&#xff08;Aspect Oriented Programming&#xff09;是面向切面编程&#xff0c;它是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&#xff09;的一种补充。面向对象编程将程序抽象成各个层次的…

5、css学习5(链接、列表)

1、css可以设置链接的四种状态样式。 a:link - 正常&#xff0c;未访问过的链接a:visited - 用户已访问过的链接a:hover - 当用户鼠标放在链接上时a:active - 链接被点击的那一刻 2、 a:hover 必须在 a:link 和 a:visited 之后&#xff0c; a:active 必须在 a:hover 之后&…

【C语言每日一题】01. Hello, World!

题目来源&#xff1a;http://noi.openjudge.cn/ch0101/01/ 01. Hello, World! 总时间限制: 1000ms 内存限制: 65536kB 问题描述 对于大部分编程语言来说&#xff0c;编写一个能够输出“Hello, World!”的程序往往是最基本、最简单的。因此&#xff0c;这个程序常常作为一个初…

【广州华锐互动】VR工厂消防安全演习提供了一种全新、生动的安全教育方式

在工业生产环境中&#xff0c;安全永远是首要的考虑因素。近年来&#xff0c;随着科技的发展&#xff0c;虚拟现实(VR)技术在各种领域的应用越来越广泛&#xff0c;包括教育和培训。其中&#xff0c;VR工厂消防安全演习就是一个典型的例子&#xff0c;它为员工提供了一种全新的…

关于目标检测鼻祖R-CNN论文

R-CNN系列论文是使用深度学习进行物体检测的鼻祖论文&#xff0c;其中fast-RCNN 以及faster-RCNN都是沿袭R-CNN的思路。R-CNN全称region with CNN features&#xff0c;其实它的名字就是一个很好的解释。用CNN提取出Region Proposals中的featues&#xff0c;然后进行SVM分类与b…

手搭手入门MyBatis-Plus

MyBatis-Plus Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis(opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 特性 无侵入&#…

NLP - 如何解决ModuleNotFoundError: No module named ‘jieba‘的问题

错误描述 在JUPYTER中&#xff0c;使用结巴分词&#xff0c;出错&#xff1a; ModuleNotFoundError: No module named jieba解决方案 在 Anaconda Prompt 中&#xff0c;执行以下指令&#xff08;可以解决&#xff09;&#xff1a; pip install jieba -i https://pypi.tuna…

安全学习DAY16_信息打点-CDN绕过

信息打点-CDN绕过 文章目录 信息打点-CDN绕过本节思维导图相关链接&工具站&项目工具前置知识&#xff1a;CDN配置&#xff1a;配置1&#xff1a;加速域名-需要启用加速的域名配置2&#xff1a;加速区域-需要启用加速的地区配置3&#xff1a;加速类型-需要启用加速的资源…

信创、工业软件国产化:全面解析三大实时操作系统

信创与国产工业操作系统可以擦出什么火花。 信创技术的快速发展&#xff0c;为国产工业操作系统的研发和应用提供了广阔的空间。 工业操作系统作为工业制造的大脑和神经&#xff0c;工业软件已渗透和应用到工业领域几乎所有核心环节。工业操作系统是智能制造的核心&#xff0c;…

2023年菏泽市中职学校技能大赛“网络安全”赛项规程

2023年菏泽市中职学校技能大赛 “网络安全”赛项规程 一、赛项名称 赛项名称&#xff1a;网络安全 赛项所属专业大类&#xff1a;信息技术类 二、竞赛目的 通过竞赛&#xff0c;检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力&#xff0c;以及分析…

go gorm belong to也就是多对一的情况

多位员工属于同一个公司&#xff0c;一个公司包含多个人&#xff0c;关系放在多的那一部分 belongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。 例如&#xff0c;您的应用包含 user 和 company&#xff0c;并且每个 user 能…

RabbitMq的使用

最近处理访客记录所以&#xff0c;来学习下rabbitMQ。之前同事已经写好了&#xff0c;这里只需要进行消费&#xff0c;后续会逐渐完善。 0.介绍 0.1交换机&#xff08;Exchanges&#xff09; rabbitmq中生产者发送的消息都是发送到交换机&#xff0c;再由交换机推入队列。所…