当前位置: 首页 > article >正文

项目总结(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赋值给QJsonObject
        QJsonObject 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.把读取的结果存入obj
    auto&& 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.kler.cn/a/378517.html

相关文章:

  • opengrok_windows_环境搭建
  • Unity新版InputSystem短按与长按,改键的实现
  • Android AutoMotive --CarService
  • Hadoop•搭建完全分布式集群
  • 代码随想录刷题day13|(链表篇)24.两两交换链表中的结点
  • C语言练习(17)
  • Apache 配置出错常见问题及解决方法
  • CSS学习之Grid网格布局基本概念、容器属性
  • OpenCV自动滑块验证(Java版)
  • 数据库基础(1) . 关系型数据库
  • eclipse下载与安装(汉化教程)超详细
  • filebeat+elasticsearch+kibana日志分析
  • java项目之微服务在线教育系统设计与实现(springcloud)
  • Python爬虫的“京东大冒险”:揭秘商品类目信息
  • Golang gRPC
  • Pycharm,2024最新专业版下载安装配置详细教程!
  • uni-app使用movable-area 实现数据的拖拽排序功能
  • 链表逆置相关算法题|原地逆置|轮转链表|循环链表逆置(C)
  • vscode markdown-image 图片粘贴自动上传到本地目录设置
  • 11月3日笔记(根据凭据提权)
  • Manus Metagloves Pro虚拟现实手套
  • java项目之协力服装厂服装生产管理系统的设计与实现(springboot)
  • Spring Boot框架下的信息学科平台系统架构设计
  • AG32的3个ADC可以并联使用吗
  • 【工具变量】“宽带中国”试点城市名单匹配数据集(2000-2023年)
  • 基于海思soc的智能产品开发(产品开发和mpp平台)