项目总结(3)

一.输入框集合

QLineEdit是一个单行文本编辑控件。
使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。
通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。
文本的长度可以由 maxLength() 限制,可以通过使用 validator() 或者 inputMask() 可以限制它只能输入数字。在对同一个QLineEdit的validator或者input mask进行转换时,最好先将它的validator或者input mask清除,以避免错误发生。
与QLineEdit相关的一个类是QTextEdit,它允许多行文字以及富文本编辑。
我们可以使用 setText() 或者 insert() 改变其中的文本,通过 text() 获得文本,通过 displayText() 获得显示的文本,使用 setSelection() 或者 selectAll() 选中文本,选中的文本可以通过cut()、copy()、paste()进行剪切、复制和粘贴,使用 setAlignment() 设置文本的位置。
文本改变时会发出 textChanged() 信号;如果不是由setText()造成文本的改变,那么会发出textEdit()信号;鼠标光标改变时会发出cursorPostionChanged()信号;当返回键或者回车键按下时,会发出returnPressed()信号。
当编辑结束,或者LineEdit失去了焦点,或者当返回/回车键按下时,editFinished()信号将会发出

    /*** @brief 输入编辑框*/QList<QLineEdit*> _inputEdit;//1.存入集合_inputEdit = { ui->a1s, ui->a2s, ui->b1s, ui->b2s, ui->a1m, ui->a2m, ui->b1m, ui->b2m, ui->a1e, ui->a2e, ui->b1e, ui->b2e };//2. 遍历集合大小,当前的//回车后 编辑框光标后移for (int i = 0; i < _inputEdit.size(); ++i) {// 连接 returnPressed 信号到槽函数,处理光标下移if (i < _inputEdit.size() - 1) {QObject::connect(_inputEdit.at(i), &QLineEdit::returnPressed, [=]() {_inputEdit.at(i + 1)->setFocus();});}}//3. 遍历 _inputEdit 集合,并清空每个 QLineEdit 控件的内容for (auto* lineEdit : _inputEdit) {if (lineEdit != nullptr) {lineEdit->clear();}}//4.for (const auto& edit : this->_inputEdit) {if (edit->text().isEmpty()) {Toast::ShowTip("缺少输入数据,不能计算");return;}}//5.遍历所有QLineEdit,设置只读。for (auto&& edit : this->findChildren<QLineEdit*>()) {edit->setReadOnly(true);}

二.QjsonObject

//1.把QMap的key与value赋值给QJsonObjectQJsonObject totalJson;for (auto it = X_dianeter.cbegin(); it != X_dianeter.cend(); ++it) {QString newKey = "$$" + it.key() + "$$";totalJson[newKey] = QString::number(it.value());}

三.利用Utils进行json读写

void MilitaryLaboratoryInformation::loadJsonData(const QString& filePath)
{//1.把读取的结果存入objauto&& obj = Utils::ReadJsonFile(filePath);if (!obj.has_value()) {return;}//obj.value==QjsonObject//obj.value[edit->objectName]==QjsonObject["QLineEdit名称"]//2.this->findChildren<QLineEdit*>去查找页面中的QLineEdit,把变量存入edit。for (auto&& edit : this->findChildren<QLineEdit*>()) {if (obj.value().contains(edit->objectName())) {edit->setText(obj.value()[edit->objectName()].toString());}}
}//2.QPair<std::optional<QJsonObject>, QString> CalibrationWidget::theodoliteSubmitResultReplaceJson(QJsonObject obj){QStringList keys = {"照准部旋转正确性","视轴与横轴的垂直度","横轴与竖轴的垂直度","竖盘指标差","望远镜调焦运行误差","一测回水平方向标准偏差","一测回竖直角测角标准偏差"};for (const QString& key : keys) {if (!obj.contains(key) || obj.value(key).isNull() || obj.value(key).toString().isEmpty()) {return QPair<std::optional<QJsonObject>, QString>(std::nullopt, key + " 缺失或为空");}}QJsonObject replaceJson;replaceJson.insert("$$RIGHT$$", obj.value("照准部旋转正确性").toString());replaceJson.insert("$$SHV$$", obj.value("视轴与横轴的垂直度").toString());replaceJson.insert("$$VHV$$", obj.value("横轴与竖轴的垂直度").toString());replaceJson.insert("$$VD$$", obj.value("竖盘指标差").toString());replaceJson.insert("$$SCOPE$$", obj.value("望远镜调焦运行误差").toString());replaceJson.insert("$$H$$", obj.value("一测回水平方向标准偏差").toString());replaceJson.insert("$$V$$", obj.value("一测回竖直角测角标准偏差").toString());return QPair<std::optional<QJsonObject>, QString>(replaceJson, QString());}//遍历后返回QPair<std::optional<QJsonObject>,QString>的值,auto&& commitResut = theodoliteSubmitResultReplaceJson(opt.value());if (commitResut.first.has_value()) {Utils::Append(obj, Utils::Merge({ commitResut.first.value() }));} else {TOAST_TIP(commitResut.second);return;}

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

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

相关文章

使用 Redux 在 Flutter鸿蒙next 中实现状态管理

在 Flutter 中进行状态管理是开发应用程序时的一个关键问题。Flutter 提供了多种解决方案来管理应用的状态&#xff0c;其中 Redux 是一种广泛使用且功能强大的状态管理库。虽然 Redux 最初是为 JavaScript 和 React 设计的&#xff0c;但它的核心概念非常适用于 Flutter&#…

032集——圆转多段线(Circle to Polyline)(CAD—C#二次开发入门)

CAD中圆可转为带有凸度的多段线以方便后期数据计算、处理&#xff0c;效果如下&#xff1a; 白色为圆&#xff0c;红色为转换后的多段线&#xff08;为区分&#xff0c;已手工偏移多段线&#xff09; public static void XX(){var curves Z.db.SelectEntities<Entity>…

【极客兔兔-Web框架Gee详解】Day2 上下文Context

文章目录 一、框架结构二、设计上下文(Context):day2-context/gee/context.go1. 设计Context必要性1.1 接口粒度过细:1.2 缺乏扩展性:2. 代码3. 优势三、路由(Router): day2-context/gee/router.go四、框架入口:day2-context/gee/gee.go1. 代码五、框架使用: day2-context/m…

VSCode设置长行自动折行

有时候一行代码或者是注释会比较长&#xff0c;为了方便阅读&#xff0c;习惯让它折行显示&#xff1b;而VSCode在默认情况下&#xff0c;是不会自动折行的&#xff0c;这不利于阅读&#xff0c;我们可以通过设置来达到折行的效果。 具体操作步骤&#xff1a; 打开左下角的管…

HTB:Sightless[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 继续使用nmap对靶机开放的TCP端口进行脚本、服务扫描 首先尝试对靶机FTP服务进行匿名登录 使用curl访问靶机80端口 使用浏览器可以直接访问该域名 使用浏览器直接访问该子域 Getshell 横向移动 查…

Oracle视频基础1.4.4练习

1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile&#xff0c;准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…

【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--角色可访问接口管理

咱们继续来编写孢子记账的简易权限&#xff0c;这篇文章中我们将编写角色可访问接口的管理API&#xff0c;同样我不会把完整的代码全都列出来&#xff0c;只会列出部分代码&#xff0c;其余代码我希望大家能自己手动编写&#xff0c;然后对比项目代码。废话不多说&#xff0c;开…

Monetico: 文本到图像合成的革命性变革

在人工智能和创意技术领域&#xff0c;Collov-Labs 推出了具有开创性的文本到图像合成模型 Monetico&#xff0c;它将彻底改变我们创建和可视化数字内容的方式。Monetico 是著名的 Meissonic 模型的有效再现&#xff0c;它提供了一种独特且易于使用的方法&#xff0c;可根据文本…

一步步安装deeponet的详细教学

1.deepoent官网如下&#xff1a; https://github.com/lululxvi/deeponet 需要下载依赖 1.python3 2.DeepXDE&#xff08;这里安装DeepXDE<0.11.2,这个最方便&#xff09; Optional: For CNN, install Matlab and TensorFlow 1; for Seq2Seq, install PyTorch&#xff0…

Error creating bean with name ‘reactiveElasticsearchClient

程序报错&#xff1a; org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘reactiveElasticsearchClient’ defined in class path resource [org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestC…

海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比

在当今的数字化世界中&#xff0c;视频流协议的选择对于确保流畅、高效的视频传输至关重要。随着互联网技术的快速发展&#xff0c;直播和视频点播服务已经成为人们日常生活中不可或缺的一部分。无论是安防监控、在线教育、远程会议还是娱乐直播&#xff0c;用户对于视频流的实…

Halcon 循环画框

read_image (Image, fabrik) * 循环画框 左键开始画 中间键结束 while (1) get_mbutton (3600, dummy, dummy, Button) if(Button ! 2 and Button ! 4) * 循环画框 draw_rectangle1 (3600, Row1, Column1, Row2, Column2) …

Java多线程详解⑥(全程干货!!!)死锁 || 构成死锁的条件 || 死锁总结 || Java标准库的线程安全类

这里是Themberfue 在上一节中&#xff0c;我们介绍了线程安全问题&#xff0c;对锁的概念以及使用 在本节中&#xff0c;进入 "死锁" 的概念以及如何产生 "死锁" 死锁 一个线程&#xff0c;一把锁&#xff0c;同时加两把锁 要想进入死锁的介绍和概念&a…

适用于 Windows 11/10 电脑 的 13 个最佳文件恢复软件

如果您由于系统故障、硬件损坏、人为错误或病毒攻击而丢失了重要文件或文件夹。不用担心&#xff0c;因为我们随时为您提供帮助&#xff01;借助正确的文件恢复工具&#xff0c;您可以立即检索计算机上不同类型的文件。如果你有为您的文件创建备份&#xff0c;你不用担心&#…

> 甘晴void:课程资源免费下载

为进一步减少信息差&#xff0c;便利同学&#xff0c;我把部分重要课程的轨迹&#xff08;期中期末考卷、机考题、作业答案、代码、工程项目等&#xff09;上传至Github。网址链接如下&#xff1a; https://github.com/wolfvoid/HNU-resourses Github平台的优势是下载免费&am…

华为OD机试 - 求小球落地5次后所经历的路程和第5次反弹的高度 (Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题 点这里。 实战项目访问&#xff1a;http://javapub.net.cn/ 专栏导读 本专栏收录于 《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》 。 刷的越多&#xff0c;抽中的概率越大&…

uniapp—android原生插件开发(2原生插件开发)

本篇文章从实战角度出发&#xff0c;将UniApp集成新大陆PDA设备RFID的全过程分为四部曲&#xff0c;涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程&#xff0c;轻松应对安卓原生插件开发与打包需求&#xff01; ***环境问题移步至&#xff1a;uniapp—an…

【机器学习】强化学习(1)——强化学习原理浅析(区分强化学习、监督学习和启发式算法)

文章目录 强化学习介绍强化学习和监督学习比较监督学习强化学习 强化学习的数学和过程表达动作空间序列决策策略&#xff08;policy&#xff09;价值函数&#xff08;value function&#xff09;模型&#xff08;model&#xff09; 强化学习和启发式算法比较强化学习步骤代码走…

ClickHouse创建分布式表

ClickHouse创建分布式表 当数据量剧增的时候&#xff0c;clickhouse是采用分片的方式进行数据的存储的&#xff0c;类似于redis集群的实现方式。然后想进行统一的查询的时候&#xff0c;因为涉及到多个本地表&#xff0c;可以通过分布式表的方式来提供统一的入口。由于是涉及到…

Jetson Orin Nano平台自研载板MIPI 4Lane 2.5G 接收不稳定问题调试记录

1. 前言 问题描述 参考官方文档,设计了载板,配套Orin Nano SOM来使用 测试过程中发现4lane的MIPI在2.5G速率下工作不稳定(丢帧/断流) 部分板子在2.3G/2.4G速率下才可以长时间稳定工作 2. 测试对比 2.1 根据上述现象,单独制作了转接板 转接板严格控制了MIPI走线长度(…