方法一
代码如下:
void MainWindow::on_startBtn_clicked()
{
// STC_DLT645FRAME_T stDLT645Frame;
quint8 i=0;
quint8 arrDLT645Frame[12] = {0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 0x13, 0x00, 0xDF, 0x16};
QByteArray baDLT645Frame;
for (; i<12 ;i++) {
baDLT645Frame.append(arrDLT645Frame[i]);
}
QByteArray baDLT645FrameToHex = baDLT645Frame.toHex();
std::string baDLT645FrameToStdString = baDLT645FrameToHex.toStdString();
QString strDLT645Framer = QString::fromStdString(baDLT645FrameToStdString);
ui->DispBTextEdit->setText(strDLT645Framer);
}
QByteArray转QString目的,在于上位机从终端设备获取的裸数据是Hex格式的,需要转为String格式显示在TextEdit控件上!
Hex数据添加到QByteArray中,然后调用toHex()函数,把0x68转为0x36和0x38两个元素,然后调用toStdString函数,最后stdstring转QString。
方法二
代码如下:
void MainWindow::on_startBtn_clicked()
{
quint8 i=0;
quint8 arrDLT645Frame[12] = {0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 0x13, 0x00, 0xDF, 0x16};
QByteArray baDLT645Frame;
for (; i<12 ;i++) {
baDLT645Frame.append(arrDLT645Frame[i]);
}
QString hexStr = baDLT645Frame.toHex();
ui->DispBTextEdit->setText(hexStr);
}
与方法一最大的区别就是,toHex()函数的返回直接赋值给QString对象,然后就能直接输出到TextEdit控件上。
本文介绍了两种将QByteArray转换为QString的方法。在QT应用中,当从终端设备接收到Hex格式的裸数据时,需要将其转换为String格式以便在TextEdit控件中显示。方法一是先通过toHex()函数转换,再用toStdString(),最后转为QString;方法二是直接将toHex()的结果赋值给QString对象,简化了转换步骤。
8003

被折叠的 条评论
为什么被折叠?



