从零开始实现自己的串口调试助手(10) - 优化 收尾 + 打包

光标位置优化

在接收槽函数中更新光标位置:

// 让光标始终在结尾

ui->textEditRev->moveCursor(QTextCursor::End);

ui->textEditRev->ensureCursorVisible(); // 让光标可视化

//记得HEX显示槽函数底下也得加上这两行代码

新的接收槽函数如下:

cpp 复制代码
void Widget::on_SerialData_readToRead()
{
    QString recvMessage = serialPort->readAll();

    if(recvMessage != NULL){
        if(ui->checkBox_Line->isChecked())recvMessage = recvMessage + "\r\n";
        qDebug()<<"get Message: "<<recvMessage;

        if(ui->checkBox_HexDisplay->isChecked()){ // 已经勾选HEX格式
            // 将新收到的数据转为HEX类型
            QByteArray tmpHex = recvMessage.toUtf8().toHex().toUpper();

            // 原来控件上的内容 也转为HEX格式  再拼接
            QString tmpStrOld=ui->textEditRev->toPlainText(); //获得接收框的数据
            tmpHex = tmpStrOld.toUtf8() + tmpHex; // 不能toHex 已经是Hex了
            ui->textEditRev->setText(QString::fromUtf8(tmpHex));
        }
        else{
            if(sendTimeStatus){
                //更新myTime
                getSysTime();

                // 在myTime两边添加方括号
                //            QString myTimeWithBrackets = "【" + myTime + "】";

                //            // 创建一个QString对象,首先添加带方括号的myTime,然后添加sendData
                //            QString result = myTimeWithBrackets + QString(recvMessage);
                //            qDebug()<<result;
                //            ui->textEditRev->append(result);
                ui->textEditRev->insertPlainText("【"+myTime+"】"+recvMessage);
            }
            else{
                ui->textEditRev->insertPlainText(recvMessage);
            }
        }
        readCntTotal += recvMessage.size();
        qDebug()<<"readCnt"<<recvMessage.size();
        //ui->label_RecvCnt->setNum(readCntTotal);
        ui->label_RecvCnt->setText("Receive:"+QString::number(writeCntTotal));
    }

    // 让光标始终在结尾
    ui->textEditRev->moveCursor(QTextCursor::End);
    ui->textEditRev->ensureCursorVisible(); // 让光标可视化

}

实现效果

打包

1. 选中这里的release

2.重新构建项目

3.进入找release文件夹

去我们的文件目录找到对应文件夹

进入地下release文件夹,点击运行.exe文件

会发现缺少一堆qt相关的库

4.添加对齐qt库

先找到我们安装qt的bin目录:

win + r ,输入cmd,打开cmd

切换到release文件夹,运行bin目录下的 windeployqt.exe 指定对象为release文件夹下的.exe文件

运行中

运行结束后我们会看到release路径下生成了一堆qt的配置文件

这时候他仍然缺少几个库。需要去bin里面拷贝过来

如下(请根据弹窗提示拷贝)

5. 打开

再次点击.exe文件,即可打开

6.压缩打包

然后回退到上一层目录,压缩打包release文件夹就可以发送给别人使用了

全部项目

资源里面有我们打包好的项目代码

全部详细实现过程进移步专栏:

从零开始的串口调试助手_mx_jun的博客-CSDN博客

相关推荐
坚果派·白晓明4 小时前
【鸿蒙PC三方库移植适配框架解读系列】第八篇:扩展lycium框架使其满足rust三方库适配
c语言·开发语言·华为·rust·harmonyos·鸿蒙
花间相见4 小时前
【PaddleOCR教程01】PP-OCRv5 全面指南:从模型架构到实战部署
开发语言·r语言
小短腿的代码世界5 小时前
Qt 股票订单撮合引擎:高频交易系统的核心心脏
开发语言·数据库·qt·系统架构·交互
REDcker5 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
谙弆悕博士6 小时前
快速学C语言——第16章:预处理
c语言·开发语言·chrome·笔记·创业创新·预处理·业界资讯
yuan199977 小时前
基于 C# 实现的 Omron HostLink (FINS) 协议 PLC 通讯
开发语言·c#
王老师青少年编程7 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
qq_422828627 小时前
android图形学之SurfaceControl和Surface的关系 五
android·开发语言·python
handler018 小时前
UDP协议与网络通信知识点
c语言·网络·c++·笔记·网络协议·udp
如竟没有火炬8 小时前
用队列实现栈
开发语言·数据结构·python·算法·leetcode·深度优先