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