QT 表格中的内容 怎么用 inputmask设定范围

在QT开发上位机过程中,遇到在表格中设定输入内容范围的问题。通常inputmask仅适用于QLineEdit,但通过特殊方法,也能在表格单元格内实现范围限制。具体实现过程涉及上下位机之间的数据交互,包括读取和下载参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  一般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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值