QLineedit限定只输入16进制字符,并每两个字符插入一个空格的方法


最近在写一个电路板指令调试软件时,需要QLineedit限定只输入16进制字符,并每两个字符插入一个空格

折腾了两天终于搞定,先将方法记录如下,以备不忘。

解决思路:

1.字符串过滤肯定时要用到正则表达式的:

   QLineedit限定只输入16进制字符的正则表达式这样写:"^[0-9a-fA-F]+$"

  但是因为每两个字符插入一个空格,正则表达式这样写就不行了,输到第三那个字符表达式就失灵了,还占CPU资源

(因为正则表达式和下面 2 用到的的插入空格方法冲突了)。

   这时候正则表达式因该这样写:"^[0-9a-fA-F ]+$",

             [注意:这里面多一个空格]    ->  

2.要在每两个字符插入一个空格就要用到 QLineedit的textEdited槽函数

     槽函数处理如下:(方法笨了点,能实现就好)                                                          

 

 

 

 

 1 void MainWindow::on_m_LineEdit_Card_KeyStr_textEdited(const QString &arg1)  2 {  3     int i,j;  4  QString uStr,uStr2,uStr3;  5     uStr=arg1;  6     uStr=uStr.replace(" ","");//移除空格  7 
 8     j=uStr.count();  9     if((j>3)&&(0==(j%2))) 10  { 11         uStr3=""; 12         for(i=0;i<((j/2)-1);i++) 13  { 14           uStr2=uStr.mid(i*2,2); //取子串 15           uStr3 +=uStr2+" "; //加空格 16  }
17 18 uStr2=uStr.mid(j-2,2); //加上后面的 19 uStr3 +=uStr2; 20 21 ui->m_LineEdit_Card_KeyStr->setText(uStr3); 22 } 23 }

 

          自动每两个字符添加一个空格                  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM