光标位置优化
在接收槽函数中更新光标位置:
// 让光标始终在结尾
ui->textEditRev->moveCursor(QTextCursor::End);
ui->textEditRev->ensureCursorVisible(); // 让光标可视化
//记得HEX显示槽函数底下也得加上这两行代码
新的接收槽函数如下:
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){//更新myTimegetSysTime();// 在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博客