光标位置优化
在接收槽函数中更新光标位置:
// 让光标始终在结尾
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文件夹就可以发送给别人使用了
全部项目
资源里面有我们打包好的项目代码
全部详细实现过程进移步专栏: