一般inputmask 只能用在QLineEdit中设定界限,这次做上位机的时候,内容是在表格中,经过同事指导帮忙,实现如下:
上位机从下位机读取参数,或者初始化
QString str;
for(int i =0;i<6;i++)
{
str += QString("%1").arg(stru.protocol.dlt645.addr[i], 2, 16, QChar('0'));
} 字符串以16进制输出
//item = new QTableWidgetItem(str);
QLineEdit *lineEdit = new QLineEdit(str); 定义一个新的QLineEdit
lineEdit->setInputMask("HHHHHHHHHHHH"); 16进制范围的设定
ui->tableWidget->setCellWidget(iRow, 4, lineEdit); //表格内容输出
上位机下载参数到下位机:
QWidget *widget = ui->tableWidget->cellWidget(iRow, 4); 要写的内容位置
QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget); 这个学会是怎么实现的
QString str = lineEdit->text();
QString addr0,addr1,addr2,addr3,addr4,addr5;
addr0 = str.mid(0,2);
addr1 = str.mid(2,2);
addr2 = str.mid(4,2);
addr3 = str.mid(6,2);
addr4 = str.mid(8,2);
addr5 = str.mid(10,2);
stru.protocol.dlt645.addr[0]=addr0.toInt(0,16);
stru.protocol.dlt645.addr[1]=addr1.toInt(0,16);
stru.protocol.dlt645.addr[2]=addr2.toInt(0,16);
stru.protocol.dlt645.addr[3]=addr3.toInt(0,16);
stru.protocol.dlt645.addr[4]=addr4.toInt(0,16);
stru.protocol.dlt645.addr[5]=addr5.toInt(0,16);