step6:改用单例模式

文章目录

  • 文章介绍
  • code
    • main.cpp
    • SerialPort.qml
    • SerialPortHandler.h

文章介绍

案例MF改为单例模式
参考之前写过的关于单例模式的文章单例模式1、单例模式2

code

main.cpp

在这里插入图片描述

qmlRegisterSingletonType(“com.example.serialport”, 1, 0, “SerialPortHandler”, SerialPortHandlerGetInstance);

SerialPort.qml

  • 导入模块
    在这里插入图片描述
  • 调用SerialPortHandler类

在这里插入图片描述

SerialPortHandler.h

在这里插入图片描述
在这里插入图片描述

#ifndef SERIALPORTHANDLER_H
#define SERIALPORTHANDLER_H#include <QObject>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QQmlEngine>
#include <QJSEngine>class SerialPortHandler : public QObject
{Q_OBJECTQ_PROPERTY(bool isSerialPortOpen READ isSerialPortOpen NOTIFY serialPortOpenChanged)public:// 获取单例实例static SerialPortHandler* getInstance() {static SerialPortHandler instance;  // 确保只有一个实例return &instance;}explicit SerialPortHandler(QObject *parent = nullptr);~SerialPortHandler();  // 析构函数Q_INVOKABLE void openSerialPort(const QString &portName);  // 打开指定串口Q_INVOKABLE void closeSerialPort();  // 关闭串口Q_INVOKABLE QStringList getAvailablePorts() const;  // 获取可用串口列表bool isSerialPortOpen() const;  // 检查串口是否打开signals:void serialPortOpened();  // 串口打开信号void serialPortOpenChanged();  // 串口状态改变信号void dataReceived(const QString &data);  // 数据接收信号private slots:void readData();  // 读取数据槽函数public slots:void sendData(const QString &data);  // 发送数据槽函数private:QSerialPort serialPort;  // 串口对象bool m_isSerialPortOpen;  // 串口打开状态// 禁用拷贝构造函数和赋值操作符Q_DISABLE_COPY(SerialPortHandler)
};// 单例获取函数声明
static QObject* SerialPortHandlerGetInstance(QQmlEngine *engine, QJSEngine *scriptEngine) {Q_UNUSED(engine)Q_UNUSED(scriptEngine)return SerialPortHandler::getInstance();
}#endif // SERIALPORTHANDLER_H

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

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

相关文章

《software architecture patterns》学习笔记

了解通用的架构模式并知道什么时候使用它们。 软件架构定义了软件的基本特点和行为。比如&#xff0c;有些软件架构会让软件变得可扩展&#xff0c;而有些软件架构会让软件变得易于修改。 知道每一种软件架构的特点、优缺点是非常有必要的&#xff0c;因为它们能帮助你选择一种…

数字信号处理的主要算法matlab

clc;clear;close all; figure(1);clf; Fs = 200;%采样频率 T = 1/Fs; %采样周期 N = 300;%信号长度 t =

批处理脚本的重定向艺术:操作符全解析

&#x1f500; 批处理脚本的重定向艺术&#xff1a;操作符全解析 &#x1f500; 在Windows操作系统中&#xff0c;批处理脚本&#xff08;Batch Script&#xff09;是自动化任务的得力助手。重定向操作符是批处理脚本中不可或缺的组成部分&#xff0c;它们允许你控制命令的输入…

吉时利 Keithley2461 数字源表

Keithley2461吉时利SMU高电流数字源表 2461 型图形化高电流数字 SourceMeter SMU 2461 高电流 SMU 凭借其 10A/1000W 脉冲电流和 7A/100W 直流电流能力以及双 18 位 1MS/s 数字转换器&#xff0c;优化用于检定和测试高功率材料、器件和模块&#xff0c;例如碳化硅 (SiC)、氮化…

Codeforces Round 954 (Div. 3) A~F

A.X Axis&#xff08;暴力&#xff09; 题意&#xff1a; 在 X X X轴&#xff08; 1 ≤ x i ≤ 10 1\leq x_i\leq 10 1≤xi​≤10&#xff09;上有三个点&#xff0c;其整数坐标分别为 x 1 x_1 x1​、 x 2 x_2 x2​和 x 3 x_3 x3​。您可以选择 X X X轴上任何一个整数坐标为 …

redis压测和造数据方式

一、redis 压测工具 1、压测命令 1、对3000字节的数据进行get set的操作 redis-benchmark -h 10.166.15.36 -p 7001 -t set,get -n 100000 -q -d 3000 2、100个并发连接&#xff0c;100000个请求&#xff0c;检测host为localhost 端口为6379的redis服务器性能 redis-benchma…

HP服务器基于SNMP-ilo4的硬件监控指标解读

监控易是一款功能全面的IT基础设施监控软件&#xff0c;它通过SNMP协议与HP服务器内置的ilo4远程管理卡进行通信&#xff0c;实现对HP服务器硬件状态的实时监控。本文将针对监控易中基于SNMP-ilo4的HP服务器硬件监控指标进行解读&#xff0c;帮助运维团队更好地理解和应用这些监…

【随笔】网络系统集成14349

https://blog.csdn.net/FucMobile/article/details/132885529 系统的意思是&#xff1a; 体系、制度、体制、秩序、规律、方法。 集成的意思是&#xff1a;成为整体、组合、综合、一体化。 集成可以表示将单个元器件组装成一台设备或一种结构的过程。 例如&#xff1a;将大量的…

一分钟学习数据安全—自主管理身份SSI分布式标识DID介绍

SSI标准化的两大支柱&#xff0c;一个是VC&#xff0c;之前简单介绍过&#xff0c;另一个就是DID。基本层次上&#xff0c;DID就是一种新型的全局唯一标识符&#xff0c;跟浏览器的URL没有什么不同。深层次上&#xff0c;DID是互联网分布式数字身份和PKI新层级的原子构件。 一…

偏微分方程算法之抛物型方程差分格式编程示例六(混合边界条件下C-N格式)

目录 一、研究问题 二、C++代码 三、计算结果 一、研究问题 对于混合边界条件下的抛物型偏微分方程求解,我们使用Crank-Nicolson格式(C-N格式),边界条件采用中心差商,即

分别使用netty和apache.plc4x测试读取modbus协议的设备信号

记录一下常见的工业协议数据读取方法 目录 前言Modbus协议说明Netty 读取测试使用plc4x 读取测试结束语 前言 Modbus 是一种通讯协议&#xff0c;用于在工业控制系统中进行数据通信和控制。Modbus 协议主要分为两种常用的变体&#xff1a;Modbus RTU 和 Modbus TCP/IP Modbus …

通过验证邮箱进行注册信息确认

应用在进行注册时&#xff0c;避免恶意攻击和垃圾注册&#xff0c;可以通过验证注册者身份后才能够提交。一般可以使用验证手机短信或者验证邮箱&#xff0c;验证短信会有专门的第三方服务&#xff0c;可以进行付费购买。验证邮箱的正确与否&#xff0c;可以通过以下2种方式进行…

牛掰!这小哥用显微镜摄取芯片ROM,还原了芯片的二进制固件。

最近在github上看到了一个很让人叹为观止的项目。 作者通过显微镜摄取芯片ROM,将里面的二进制固件给还原了。搞芯片和BSP的朋友都知道这意味着什么。 于是翻译这篇文章,感兴趣的朋友也可阅读原文欣赏一下,受限于英语水平,如有不当之处,还请海涵。 原文:GameBoy ROM Tut…

Linux 安装 MySQL 8.0.26

1、MySQL 8.0.26 下载 官方网站下载 MySQL 8.0.26 安装包&#xff0c;下载地址&#xff1a;mysql8.0.26 本案例采用Linux 64位操作系统进行讲解&#xff0c;通过wget命令下载安装包。 使用df -lh命令查看&#xff0c;磁盘大小&#xff0c;尽量安装在比较大的磁盘下&#xff0c…

三态缓冲器的三种状态分别是什么

在电子设计的广阔领域中&#xff0c;三态缓冲器以其独特的三态输出特性&#xff0c;成为了不可或缺的关键组件。今天我们就来一起揭秘三态缓冲器的神秘面纱&#xff0c;探讨它在电子设计中的重要作用和独特优势。 一、三态缓冲器的三态奥秘 三态缓冲器之所以得名&#xff0c;…

vue3+ts <script setup lang=“ts“> element-plus的el-date-picker设置默认日期

效果图&#xff08;单个日期&#xff09;&#xff1a; utils.ts&#xff1a; /*** 格式化时间戳* param {number} timestamp 时间戳* param {string} format 格式* returns {string}*/ export const formatTimeStamp (timestamp: number, format: string) > {if (!timesta…

Mongodb中的基本地理信息元素

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第77篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

Python 实现试卷下载器:从零开始构建 GUI 应用

在本文中&#xff0c;我们将介绍如何使用 Python 构建一个简单的试卷下载器。该应用程序可以从指定的网站下载试卷&#xff0c;并通过一个图形用户界面&#xff08;GUI&#xff09;来进行交互。我们将使用 requests 库进行网络请求&#xff0c;使用 BeautifulSoup 解析 HTML&am…

C语言使用正则表达式

C语言使用正则表达式 1. 导入头文件2. 编译正则表达式3. 执行正则表达式4. 释放正则表达式完整示例说明 在C语言中&#xff0c;可以使用POSIX正则表达式库来匹配正则表达式。POSIX正则表达式库提供了标准的正则表达式处理函数&#xff0c;例如 regcomp, regexec, 和 regfree…

iso21434认证的意义

ISO 21434认证对于汽车行业具有深远的意义&#xff0c;主要体现在以下几个方面&#xff1a; 确保汽车网络安全&#xff1a;ISO 21434认证旨在确保汽车在设计和制造过程中能够抵御潜在的网络威胁和攻击。通过遵循该标准&#xff0c;汽车制造商能够开发出具备可靠网络安全能力的…