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.mfbz.cn/a/85510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(五)Docker 安装 redis镜像+启动redis容器(超详细)

输入&#xff1a;su root命令&#xff0c;切换到root 1、启动Docker 启动&#xff1a;sudo systemctl start docker 停止&#xff1a;systemctl stop docker 重启&#xff1a;systemctl restart docker 查看docker运行状态&#xff08;显示绿色代表正常启动&#xff09;&#x…

WPF 项目中 MVVM模式 的简单例子说明

一、概述 MVVM 是 Model view viewModel 的简写。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面清晰分离。 几个概念的说明&#xff1a; model :数据&#xff0c;界面中需要的数据&#xff0c;最好不要加逻辑代码view : 视图就是用户看到的UI结构 xaml 文件viewModel …

【STM32RT-Thread零基础入门】 6. 线程创建应用(线程挂起与恢复)

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 挂起线程2. 恢复线程 二、程序设计1. car_led.c2.car_led.h3. main.c 三、程序测试总结 前言 在上一个任务中&a…

【QML】鼠标放在控件上颜色改变的效果实现

最近刚好要用到一个功能&#xff0c;在qml上实现鼠标放上去&#xff0c;控件的颜色改变&#xff0c;鼠标移走&#xff0c;控件颜色恢复。第一反应是这个功能非常简单&#xff0c;但是搞了一会儿都没实现&#xff0c;最后发现MouseArea其实提供了一个很简便的方法来提供使用&…

PHP反序列化 字符串逃逸

前言 最近在打西电的新生赛&#xff0c;有道反序列化的题卡了很久&#xff0c;今天在NSS上刷题的时候突然想到做法&#xff0c;就是利用字符串逃逸去改变题目锁死的值&#xff0c;从而实现绕过 为了研究反序列化的字符串逃逸 我们先简单的测试下 原理 <?php class escape…

学习平台助力职场发展与提升

近年来&#xff0c;随着互联网技术的发展&#xff0c;学习平台逐渐成为了职场发展和提升的必备工具。学习平台通过提供丰富的课程内容、灵活的学习时间和个性化的学习路径&#xff0c;帮助职场人士更好地提升自己的技能和知识储备&#xff0c;为职场发展打下坚实的基础。 学习…

软件测试(黑皮书)学习一

第一部分 软件测试综述 第一章 软件测试背景 1.1软件缺陷&#xff08;software bug&#xff09; 软件失败的术语 故障&#xff08;fault&#xff09;失败&#xff08;failure&#xff09; 缺点&#xff08;defect&#xff09; ------严重、危险异常&#xff08;anomaly&…

基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像

About Alpine&#xff08;简介&#xff09; Alpine Linux 是一款极其轻量级的 Linux 发行版&#xff0c;基于 busybox&#xff0c;多被当做 Docker 镜像的底包&#xff08;基础镜像&#xff09;&#xff0c;在使用容器时或多或少都会接触到此系统&#xff0c;本篇文章我们以该镜…

【Go语言】基于Socket编程的P2P通信程序示例

Go语言的Socket编程实现为开发者提供了一种高效且强大的方式来实现网络通信。通过Go语言的并发模型和内置的网络库&#xff0c;如net包&#xff0c;开发者可以轻松地创建基于套接字的通信应用。Go语言的goroutine和channel机制使并发处理变得简单&#xff0c;能够轻松处理多个连…

leetcode 125.验证回文串

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/valid-palindrome/ 思路&#xff1a; 这道题只判断字符串中的字母与数字是否是回文。虽然小写大写字母可以互相转换&#xff0c;但是里面是含有数字字符的&#xff0c;所以先统一&#xff…

排序算法合集

F B I W a r n i n g : \color{red}FBI \qquad Warning: FBIWarning: 本人没有完整的计算机科班的教育经历&#xff0c;但是一直在兢兢业业&#xff0c;努力学习。 这些排序函数都是自己零零散散写的&#xff0c;也没有经过深思熟虑和优化&#xff0c;纯粹是为了自娱自乐。 …

node使用高版本的oracledb导致连接oracle的Error: NJS-138异常

异常信息如下 Error: NJS-138: connections to this database server version are not supported by node-oracledb in Thin mode 我的oracle版本是11g&#xff0c;之前的使用正常&#xff0c;今天却报错了&#xff0c;显示不支持thin模式&#xff0c;后面回退版本就可以了。

AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题

1、给instances权限 action > Security > modify IAM role 把提前创建好的role给这个instance即可 2、复制到bucket aws s3 cp gogo.tar.gz s3://ee547finalbucket不需要手动安装GPU驱动 如果要自己安装&#xff0c;参考https://docs.aws.amazon.com/AWSEC2/latest/U…

6-模板初步使用

官网: 中文版: 介绍-Jinja2中文文档 英文版: Template Designer Documentation — Jinja Documentation (2.11.x) 模板语法 1. 模板渲染 (1) app.py 准备数据 import jsonfrom flask import Flask,render_templateimport settingsapp Flask(__name__) app.config.from_obj…

C#详解-Contains、StartsWith、EndsWith、Indexof、lastdexof

目录 简介: 过程: 举例1.1 举例1.2 ​ 总结: 简介: 在C#中Contains、StarsWith和EndWith、IndexOf都是字符串函数。 1.Contains函数用于判断一个字符串是否包含指定的子字符串&#xff0c;返回一个布尔值&#xff08;True或False&#xff09;。 2.StartsWith函数用于判断一…

wifi高通驱动之WCNSS_qcom_cfg.ini以及MCS、空间流数的学习和记录

一、WCNSS_qcom_cfg.ini 这个文件说是可以调优wifi的带宽&#xff0c;还有MIMO技术 Android Wi-Fi MIMO/SISO设置方法&#xff08;基于高通平台&#xff09;_广凯的博客-CSDN博客 不是太了解&#xff0c;先记录一下&#xff0c;个人感觉MCS和MIMO技术最全的应该是下面的网址…

DataLoader PyTorch 主要参数的含义

定义&#xff1a; DataLoader类是一个用于从数据集&#xff08;dataset&#xff09;中加载数据&#xff0c;并以迭代器&#xff08;iterator&#xff09;的形式返回数据样本&#xff08;data samples&#xff09;的工具。您给出的两个字典&#xff08;dictionary&#xff09;分…

%f占位符

介绍&#xff1a; %f &#xff0c;用来输出实数&#xff08;包括单双精度&#xff09;&#xff0c;以小数形式输出。 通常情况下&#xff0c;当输入的数值或者打印的数值是float类型数据时&#xff0c;使用%f &#xff0c;当然在精度更高的double数据类型下&#xff0c;也可以…

记忆正则表达式的基本元件

正则常见的三种功能&#xff0c;它们分别是&#xff1a;校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。 正则表达式&#xff0c;简单地说就是描述字符串的规则。在正则中&#xff0c;普通字符表示的还是原来的意思&#xff0c;比如字符 a&#xff0c;…

Linux下的Shell编程——正则表达式入门(四)

前言&#xff1a; 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。 在Linux 中&#xff0c;grep&#xff0c;sed&#xff0c;awk 等文本处理工具都支持…
最新文章