QLineedit限定只输⼊16进制字符,并每两个字符插⼊⼀个空格
的⽅法
最近在写⼀个电路板指令调试软件时,需要QLineedit限定只输⼊16进制字符,并每两个字符插⼊⼀个空格
折腾了两天终于搞定,先将⽅法记录如下,以备不忘。python 正则表达式 空格
解决思路:
1.字符串过滤肯定时要⽤到正则表达式的:
QLineedit限定只输⼊16进制字符的正则表达式这样写:"^[0-9a-fA-F]+$"
但是因为每两个字符插⼊⼀个空格,正则表达式这样写就不⾏了,输到第三那个字符表达式就失灵了,还占CPU资源(因为正则表达式和下⾯ 2 ⽤到的的插⼊空格⽅法冲突了)。
这时候正则表达式因该这样写:"^[0-9a-fA-F ]+$",
[注意:这⾥⾯多⼀个空格] ->
2.要在每两个字符插⼊⼀个空格就要⽤到 QLineedit的textEdited槽函数
槽函数处理如下:(⽅法笨了点,能实现就好)
1void MainWindow::on_m_LineEdit_Card_KeyStr_textEdited(const QString &arg1)
2 {
3int i,j;
4 QString uStr,uStr2,uStr3;
5 uStr=arg1;
6 place("","");//移除空格
7
8 unt();
9if((j>3)&&(0==(j%2)))
10 {
11 uStr3="";
12for(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 }
⾃动每两个字符添加⼀个空格
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论