【Qt-20】Qt信号与槽

news2024/11/18 20:32:05

一、什么是信号和槽
信号是特定情况下被发射的事件,发射信号使用emit关键字,定义信号使用signals关键字,在signals前面不能使用public、private、protected等限定符,信号只用声明,不需也不能对其进行定义实现。另外,信号没有返回值,只能是void类型。
例:

发射信号:

emit dlgReturn(value);

 定义信号:

signals:
    void dlgReturn(int);  

槽是对信号响应的函数,使用slots关键字,槽可以是private、public、protected类型。
例:

private slots:
    void showValue(int value);

二、信号与槽的关联
例:
connect(dlg,SIGNAL(dlgReturn(int)),this,SLOT(showValue(int)));
第一个参数为发送信号的对象;第二个参数是要发送的信号;第三个参数是接收信号的对象;第四个参数是要执行的槽。connect()函数的返回值是bool类型。另外,在调用这个函数时信号和槽的参数只能有类型,不能有变量,若写成SLOT(showValue(int value))是错误的。
三、示例程序
实现效果:在主界面(widget.cpp)中创建一个对话框(mydialog.cpp),当点击对话框中确定按钮时,将输入的数值通过信号发射出去,主界面接收该信号,并显示数据。

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;

private slots:
	void showValue(int value);

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "mydialog.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

	MyDialog *dlg = new MyDialog(this);
	// 将对话框中的自定义信号与主界面中的自定义槽进行关联
	connect(dlg, SIGNAL(dlgReturn(int)), this, SLOT(showValue(int)));
	dlg->show();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::showValue(int value)         // 自定义槽
{
	ui->textEdit->append(QString::number(value));
}

mydialog.h

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MyDialog(QWidget *parent = nullptr);
    ~MyDialog();

private:
    Ui::MyDialog *ui;

signals:
	void dlgReturn(int);                  // 自定义的信号


private slots:
	void on_pushButton_clicked();

};



#endif // MYDIALOG_H

mydialog.cpp

#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);

}

MyDialog::~MyDialog()
{
    delete ui;
}


void MyDialog::on_pushButton_clicked()   // 确定按钮
{
	int value = ui->lineEdit->text().toInt();    // 获取输入的数值
	emit dlgReturn(value);               // 发射信号
	close();                             // 关闭对话框
}

运行结果:

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

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

相关文章

【Jetson 设备】window10主机下使用VNC可视化控制Jetson Orin NX

文章目录 前言VNC连接搭建(WiFi模式)Jetson Orin NX操作本地主机操作 VNC连接搭建(以太网模式)Jetson Orin NX操作本地主机操作 总结 前言 最近需要使用Jetson Orin NX对一些深度学习算法进行测试&#xff0c;为了方便主机与Jetson Orin NX之间的数据的传输&#xff0c;以及方…

MATLAB - 不能使用PYTHON,缺少matplotlib模块的解决办法

matlab缺少python-matplotlib模块的解决办法 1. 前言、概述2. 解决办法3. 可能出现问题4. 结果 1. 前言、概述 起因是我用习惯的colormap函数getPyPlot_cMap不能用了&#xff1a;【这个函数要调用PYTHON】 报错的地方&#xff1a; ModuleNotFoundError: No module named ‘ma…

html中公用css、js提取、使用

前言 开发中&#xff0c;页面会有引用相同的css、js的情况&#xff0c;如需更改则每个页面都需要调整&#xff0c;重复性工作较多&#xff0c;另外在更改内容之后上传至服务器中会有缓存问题&#xff0c;特针对该情况对公用css、js进行了提取并对引用时增加了版本号 一、提取…

微信小程序开发之会议OA的会议界面,投票界面

一、自定义组件 1&#xff0c;自定义组件介绍 从小程序基础库版本 1.6.3 开始&#xff0c;小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。 开发者可以将页面内的功能模块抽象成自定义组件&#xff0c;以便在不同的页面中重复使用&#xf…

grpc实现跨语言(go与java)服务通信

Golang微服务实战&#xff1a;使用gRPC实现跨语言通信&#xff01;随着微服务架构的发展&#xff0c;越来越多的企业开始采用微服务架构来构建分布式系统。在微服务架构中&#xff0c;服务之间的通信是非常重要的。而gRPC作为一种高效、跨平台、跨语言的RPC框架&#xff0c;成为…

小目标检测闲谈

学术界在小目标检测领域的研究进展似乎已经相对缓慢&#xff0c;这一趋势在年度顶级学术会议的相关论文中也有所体现。这部分停滞可能与深度学习领域整体的发展趋势有关。然而&#xff0c;小目标检测仍然是一个具有重要应用潜力的领域&#xff0c;尤其在实际部署中&#xff0c;…

ChatGPT(1):ChatGPT初识

1 ChatGPT原理 ChatGPT 是基于 GPT-3.5 架构的一个大型语言模型&#xff0c;它的工作原理涵盖了深度学习和自然语言处理技术。以下是 ChatGPT 的工作原理的一些关键要点&#xff1a; 神经网络架构&#xff1a;ChatGPT 的核心是一个深度神经网络&#xff0c;采用了变种的 Tran…

1 tcp协议20问

1什么是TCP网络分层 1.1分层描述 网络访问层&#xff1a; 2 TCP的三次握⼿中为什么是三次&#xff1f;为什么不是两次、四次&#xff1f; 两次握手的话&#xff0c;服务端会单方面认为建立已经成功&#xff0c;但是对于客户端而言&#xff0c;可能只是开个玩笑的&#xff0c…

形式化验证笔记

参考视频&#xff1a; 形式化验证的原理与新应用【DatenLord达坦科技】形式化验证入门(我强推&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;) 形式化验证&#xff1a;在状态机表征的空间里面进行搜索&#xff0c;验证某个模型是否按规范执行且测试覆盖率达到1…

058:mapboxGL监听键盘事件,通过panBy控制前后左右移动

第058个 点击查看专栏目录 本示例是介绍演示如何在vue+mapbox中监听键盘事件,控制前后左右移动。 本例通过panBy方法来移动一定距离的地图,通过.addEventListener的方法来监听键盘的按键动作。注意这里面style中一定要设置好pitch,不能为0,不然就撞墙,不能移动了。 直接复…

OpenCV 笔记(2):图像的属性以及像素相关的操作

Part11. 图像的属性 11.1 Mat 的主要属性 在前文中&#xff0c;我们大致了解了 Mat 的基本结构以及它的创建与赋值。接下来我们通过一个例子&#xff0c;来看看 Mat 所包含的常用属性。 先创建一个 3*4 的四通道的矩阵&#xff0c;并打印出其相关的属性&#xff0c;稍后会详细…

数据库索引种类

文章目录 索引的优缺点优点缺点 聚簇索引特点优点缺点 非聚簇索引特点优点缺点使用场景&#xff1a; 在MyISAM与InnoDB中的使用 索引的优缺点 索引概述 MySQL官方将索引定义为帮助MySQL高效获取数据的数据结构。索引的本质是一种排好序的快速查找数据结构&#xff0c;用于满足…

YOLOv5/v7/v8改进实验(五)之使用timm更换YOLOv5模型主干网络Backbone篇

&#x1f680;&#x1f680; 前言 &#x1f680;&#x1f680; timm 库实现了最新的几乎所有的具有影响力的视觉模型&#xff0c;它不仅提供了模型的权重&#xff0c;还提供了一个很棒的分布式训练和评估的代码框架&#xff0c;方便后人开发。更难能可贵的是它还在不断地更新迭…

(H5轮播)vue一个轮播里显示多个内容/一屏展示两个半内容

效果图 : html: <div class"content"><van-swipeclass"my-swipe com-long-swipe-indicator":autoplay"2500"indicator-color"#00C4FF"><van-swipe-itemclass"flex-row-wrap"v-for"(items, index) in M…

Kubernetes 进阶

Kubernetes 进阶  Service 控制器  Ingress 对象(对外暴露应用)  管理应用程序配置  K8s 数据卷与持久数据卷  再谈有状态应用部署:StatefulSet控制器  K8s 安全访问控制  K8s 部署利器Helm初探 Service 控制器 • Service存在的意义 • Pod与…

更改Kali Linux系统语言以及安装zenmap

目录 更改Kali Linux系统语言 安装 Zenmap 更改Kali Linux系统语言以及安装zenmap 在使用kali的过程中&#xff0c;会遇到许多问题&#xff0c;其中一个就是看不懂英语&#xff0c;下面是如何更换语言的步骤。 更改Kali Linux系统语言 首先&#xff0c;打开kali&#xff0…

学信息系统项目管理师第4版系列32_信息技术发展

1. 大型信息系统 1.1. 大型信息系统是指以信息技术和通信技术为支撑&#xff0c;规模庞大&#xff0c;分布广阔&#xff0c;采用多级 网络结构&#xff0c;跨越多个安全域&#xff1b;处理海量的&#xff0c;复杂且形式多样的数据&#xff0c;提供多种类型应用 的大系统 1.1.…

python安装、输入输出、注释、中文编码、编码规范等基础语法

一、概述 1、简介 Python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年的圣诞节期间&#xff0c;Guido开始写Python语言的编译器。Python这个名字&#xff0c;来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的…

30 Python的matplotlib模块

概述 在上一节&#xff0c;我们介绍了Python的pandas模块&#xff0c;包括&#xff1a;Series、DataFrame、数据读取和写入等内容。在这一节&#xff0c;我们将介绍Python的matplotlib模块。matplotlib模块是一个Python的2D绘图库&#xff0c;可以实现各种类型的图形绘制&#…

【试题021】C语言算术运算符例题

1.题目&#xff1a;表达式4.8-1/25%3的值是 &#xff1f; 2.代码解析&#xff1a; //表达式4.8-1/25%3的值是?printf("%d\n", (4 - 1 / 2 5 % 3));//分析&#xff1a;多个运算符看优先级高低次序//根据口诀可知&#xff1a; /和%都排第三&#xff0c;和-排第四//所…