QT:不同UI间数据,信号的交互

前言

  接上文,手动绘制的矩形框毕竟还是在上位机的播放界面内,想要把数据发送给3559还是需要通过串口或者网口发送,没有部署在一个界面就需要不同UI间数据和信号进行交互了,数据还好说,全局变量都可以做到,信号的话使用connect将信号和槽连接起来就可以了,对于槽函数和信号发起者和槽的接收者一定要注意匹配

同一个界面的信号和槽

  在Qt中,信号和槽是一种非常重要的机制,用于实现对象间的通信和交互。信号是对象发出的事件,槽是响应这些事件的函数。一个对象可以通过emit关键字发出一个信号,其他对象可以将自己的槽函数与这个信号连接起来,当信号被发出时,所有与之连接的槽函数都会被调用。
  在同一个界面中,可以通过对象之间的信号和槽连接来实现界面控件之间的交互。具体步骤如下:
  1. 在界面设计时,为需要接收信号的控件设置一个名称,方便后续使用。
  2. 在界面对应的类中,定义槽函数,在槽函数中实现对控件的操作。
  3. 在类的构造函数中,将控件的信号与槽函数连接起来。使用QObject::connect函数实现连接,其语法如下:

connect(sender, signal, receiver, slot);

  其中,sender是发出信号的对象,signal是信号名称,receiver是接收信号的对象,slot是槽函数名称。
例如,如果想将一个按钮的clicked()信号和一个自定义的槽函数相连接,可以用下面的代码:

connect(ui->button, &QPushButton::clicked, this, &MyClass::mySlot);

  在点击按钮时,emit clicked()信号,就会调用mySlot()函数。
  4. 在槽函数的实现中,注意可以通过sender()函数获取发出信号的对象指针,进而对该对象进行操作。
总之,通过信号和槽的连接,可以实现同一个界面中不同控件之间的交互和协作,提高界面的交互性和可用性。
比如想要实现在播放界面框选目标,3559实现跟踪功能
在这里插入图片描述
  就需要在播放区域绘制矩形框后发送信号给button,button作为槽再解决发送的问题,我觉得可以理解为中断处理函数,微观上讲,发出了信号就好比产生了中断,连接信号槽之后就好比跳转到了中断处理函数,解决完再次返回,宏观上同时进行
  先在头文件中申明信号

signals:void buttonClicked_ctrl_left();//通知串口网口void buttonClicked_shift_left();//通知串口网口void buttonClicked_exit_left();//通知串口网口

写出对应的槽函数,注意此时的槽函数是执行发送了另一个信号

void rtsp::on_pushButton_clicked()
{emit buttonClicked_ctrl_left1();
}void rtsp::on_pushButton_2_clicked()
{emit buttonClicked_shift_left1();
}void rtsp::on_pushButton_3_clicked()
{emit buttonClicked_exit_left1();
}

  在构造函数内将信号和槽连接,播放部分的类是FFmpegWidget,在界面中命名为playWidget,一定一定要匹配信号的发起者和槽的接收者

connect(ui_rtsp->playWidget, &FFmpegWidget::buttonClicked_ctrl_left, this, &rtsp::on_pushButton_clicked);
connect(ui_rtsp->playWidget, &FFmpegWidget::buttonClicked_shift_left, this, &rtsp::on_pushButton_2_clicked);
connect(ui_rtsp->playWidget, &FFmpegWidget::buttonClicked_exit_left, this, &rtsp::on_pushButton_3_clicked);

不同界面的信号和槽

  不同界面之间的连接也可用通过类似方式,但是slots需要声明为public
  申明信号

signals:void buttonClicked_ctrl_left1();//通知串口网口void buttonClicked_shift_left1();//通知串口网口void buttonClicked_exit_left1();//通知串口网口

  申明槽函数

public slots:void on_pushButton_3_clicked();void on_pushButton_31_clicked();void on_pushButton_clicked();

  main函数中将二者连接

	rtsp w;serial w2;QObject::connect(&w, &rtsp::buttonClicked_ctrl_left1, &w2, &serial::on_pushButton_3_clicked);QObject::connect(&w, &rtsp::buttonClicked_shift_left1, &w2, &serial::on_pushButton_31_clicked);QObject::connect(&w, &rtsp::buttonClicked_exit_left1, &w2, &serial::on_pushButton_clicked);

  槽函数内将传来的坐标换算发送即可
在这里插入图片描述
在这里插入图片描述
  测试发现绘制的矩形框和跟踪结果完全一致,非常成功

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

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

相关文章

【c++】反向迭代器的探究实现

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 在list中我们实现了正向的迭代器,学习完优先级队列后,我们也对适配器模式有了一个深刻的理解,这篇文章基于这种模式下,实现各类容器的反向迭…

Docker-compose部署LTC同步节点

1、下载ltc程序包,litecoin下载地址 下载页 mkdir /data/docker-compose/ltc cd /data/docker-compose/ltc https://github.com/litecoin-project/litecoin/releases/download/v0.21.3/litecoin-0.21.3-x86_64-linux-gnu.tar.gz2、编写dockerfile和bitcoin.conf b…

我开始接单/兼职/搞副业/建设个人社区,为自己谋后路了。

我开始接单/兼职/搞副业/建设个人社区,为自己谋后路了。 简述 大家好,我是小荣,一个前端开发程序员。我最近开始在业余时间接私单了,也在想一些能够带来成长,收入的副业,主要也是为了自己谋后路&#xff…

C语言:数据结构(双向链表)

目录 1、双向链表的结构2、顺序表和双向链表的优缺点分析3、双向链表的实现 1、双向链表的结构 注意:这⾥的“带头“跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严谨,但是为了更好的理解就直接称为单链表的头节点。 带…

SSH远程登录实操实验!

ssh远程登录协议:默认端口号22 以下实验7-2是服务端,7-1是客户端 服务器的相关信息: 服务名称:sshd 服务端主程序:/usr/sbin/sshd 服务端配置文件:/etc/ssh/sshd_config 客户端相关信息: …

python的输入输出(爽文,备忘,查询,友好)

Python中的输入输出主要涉及到输入函数和输出函数。 输出函数:print() print() 函数用于将信息输出到屏幕上。它可以输出字符串、变量的值,以及其他各种数据类型。 name "Alice" age 30 print("姓名:", name, "年龄:&quo…

ip ssl证书无限端口网站

IP SSL证书是由CA认证机构颁发的一种特殊数字证书。大部分SSL数字证书都需要用户使用域名进行申请,想要对公网IP地址加密实现https访问就需要申请IP SSL证书。IP SSL证书采用了强大的加密算法,可以有效地防止数据在传输过程中被窃取或篡改,具…

[C语言]典型例题:小蚂蚁爬橡皮筋、买汽水问题、导致单词块、菱形打印……

1、小蚂蚁爬橡皮筋问题 假设橡皮筋长4m,小蚂蚁从一端爬向另一端每天爬1m,且每爬了1m,橡皮筋会立马拉伸4m,在理想条件下,小蚂蚁需要爬多少天可以到达橡皮筋的另一端? 不仔细想,我们很可能认为小蚂…

Scikit-Learn回归树

Scikit-Learn回归树 1、决策树1.1、什么是决策树1.2、决策树学习的步骤1.3、决策树算法 1、决策树 决策树(DTs)是一种用于回归和分类的有监督学习方法。通常,决策树用于分类问题;当决策树用于回归问题时,称为回归树。回…

【C++】:日期类的实现 -- 日期计算器

前言 1.日期类是一种十分经典的类型。对于C的初学者,它能够帮助我们融会贯通许多C的基础知识,它涉及许多的基础语法,比如引用,函数重载,传值/传参返回,构造函数,运算符重载,const成…

【Python小练】求斐波那契数列第n个数

题目 输出斐波那契数列第n个数。 分析 首先我们要知道,斐波那契数列,这个数列从第三位开始等于前两个数的和,要知道数列第n个数(n>2),就要知道其前两相的值,着就需要用到递归了。来看一下吧…

C语言实验-循环结构和选择结构

一&#xff1a; 求和:1(14)(149)(14916)…(14916…n2)? 其中n的值由键盘输入&#xff1b; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int sum 0;int n 0;printf("请输入一个整数");scanf("%d", &n);for (int i 0; i &l…

Apache中如何配置 ws 接口

Apache中如何配置 wss 接口 在Apache中配置WebSockets的支持&#xff0c;你需要使用mod_proxy_wstunnel模块&#xff0c;该模块是Apache的一个代理模块&#xff0c;它允许你代理WebSocket请求。 以下是配置步骤的简要说明和示例&#xff1a; 确保你的Apache服务器安装了mod_…

【最大公约数 排序】2344. 使数组可以被整除的最少删除次数

本文涉及知识点 最大公约数 排序 LeetCode2344. 使数组可以被整除的最少删除次数 给你两个正整数数组 nums 和 numsDivide 。你可以从 nums 中删除任意数目的元素。 请你返回使 nums 中 最小 元素可以整除 numsDivide 中所有元素的 最少 删除次数。如果无法得到这样的元素&a…

【高质量】2024五一数学建模C题保奖思路+代码(后续会更新)

你的点赞收藏是我后续更新的最大动力&#xff01; 一定要点击文末的卡片&#xff0c;那是获取资料的入口&#xff01; 你是否在寻找数学建模比赛的突破点&#xff1f; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 年五一数学建模&#xff08;C题&#xff09;…

1700java进销存管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 java web进销存管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为sqlser…

Vue通过下拉框选择字典值,并将对应的label以及value值提交到后端

产品品种从字典中获取 产品性质也是从字典中获取 字典当中的保存 dict_type表 dict_data表 在表单提交的方法中 1.因为做的产品性质是多选&#xff0c;它会以数组的方式提交&#xff0c;所以需要先将Json格式转变为String JSON.stringify(this.form.nature) 2.提交表单&…

【Linux网络编程】DNS、ICMP、NAT技术、代理服务器+网络通信各层协议总结

DNS、ICMP、NAT技术、代理服务器网络通信总结 1.DNS2.ICMP协议2.1ping命令2.2traceroute命令 3.NAT技术4.NAT和代理服务器5.网线通信各层协议总结 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&…

vue3 依赖-组件tablepage-vue3版本1.0.3更新内容

github求⭐ 可通过github 地址和npm 地址查看全部内容 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例-汇总 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅰ&#…

JAVAEE—servlet的概念及使用,使用servlet接口实现一个表白墙

文章目录 servlet的概念静态页面和动态页面servlet的作用 写出一个servlet程序目录的创建设置smart tomcat编写helloworld servlet的概念 首先我们要搞明白什么是servlet&#xff0c;servlet是一种实现动态页面的技术&#xff0c;他是由tomcat提供给程序员的一组API可以帮助程…