1.使用正規表示式檢驗qlineedit的輸入範圍(**如下):
#include
#include
qlineedit *lineedit = new qlineedit(this);
qregexp regexp("[a-za-z][1-9][0-9]"); //^[1-9][0-9]*$ 和 ^[1-9][/d]*$
//上面的正規表示式表示只能輸入大於0的正整數
lineedit->setvalidator(new qregexpvalidator(regexp, this));
#####或者用這個
qlineedit只輸入字母和數字 收藏
qregexp regx("[a-za-z0-9]+$");
qvalidator *validator = new qregexpvalidator(regx, lined );
ui->lined->setvalidator( validator );
2.使用 qintvalidator 整型數驗證控制項控制qlineedit的輸入範圍(**如下):
#include
#include
qvalidator* validator = new qintvalidator( 100, 999, this );
qlineedit* edit = new qlineedit( this );
// 只允許 edit 輸入整數 100 到 999
edit->setvalidator( validator );
lineedit = qlineedit() 例項化乙個輸入框
lineedit =setreadonly(true) #設定為唯讀
lineedit.setdragenabled(true) #設定能接受拖放
lineedit.setmaxlength(5) #設定最大長度
lineedit.selectall() #全選
lineedit.setfocus() #得到焦點
lineedit.setinputmask("dx") #設定修飾 該輸入框必須輸入兩個字元
punctuationre = qregexp(r"[ ,;:.]") #得到乙個regexp物件 可用下面的驗證
lineedit.setvalidator(qregexpvalidator(qregexp(r"[0-9]+")),self) #設定驗證 檢驗使用者輸入內容
lineedit.emit(signal('textchanged(qstring)')) 發出 訊號 (設定為唯讀時貌似發不出 沒有具體測試)
lineedit.emit(signal(textedited(qstring)')) 發出 訊號 如果設定了驗證 該訊號在通過驗證才能發出 (設定為唯讀時貌似發不出 沒有具體測試)
在使用qlineedit輸入數值時,經常遇到限制其範圍的需要,比如角太陽高度角範圍為[-90,90],經度值範圍[-180,180],方位角範圍[0,360]。qt提供了qintvalidator和qdoublevalidator可以限定數值輸入範圍,如使用qintvalidator限制整數的數值範圍:
例1:[cpp]view plain
copy
lineedit->setvalidator(
newqintvalidator(0, 1000,
this
));
例2:[cpp]view plain
copy
lineedit->setvalidator(
newqdoublevalidator(-180.0,180.0,6,
this
));
對於浮點數,使用qdoublevalidator時,發現只能限制只輸入小數,但是無法設定數值範圍,因此有必要對這個問題做一番研究。
除了qintvalidator和qdoublevalidator,qt提供另一種校驗器是正規表示式校驗器:qregexpvalidator,下面是一些常用的利用正規表示式校驗器限定數值範圍的用法:
限制浮點數輸入範圍為[-999999.9999,999999.9999]
[cpp]view plain
copy
qregexp rx(
"^(-?[0]|-?[1-9][0-9])(?:\\.\\d)?$|(^\\t?$)"
);
qregexpvalidator *preg = new
qregexpvalidator(rx,
this
);
lineedit->setvalidator(preg);
限制浮點數輸入範圍為[-180,180]
[cpp]view plain
copy
qregexp rx(
"(^-?180$)|(^-?1[0-7]\\d$)|(^-?[1-9]\\d$)|(^-?[1-9]$)|^0$"
);
qregexpvalidator *preg = new
qregexpvalidator(rx,
this
);
lineedit->setvalidator(preg);
限制浮點數輸入範圍為[-180,180]
[cpp]view plain
copy
qregexp rx(
"^-?(180|1?[0-7]?\\d(\\.\\d+)?)$"
);
qregexpvalidator *preg = new
qregexpvalidator(rx,
this
);
lineedit->setvalidator(preg);
限制浮點數輸入範圍為[-180,180]並限定為小數字後4位
[cpp]view plain
copy
qregexp rx(
"^-?(180|1?[0-7]?\\d(\\.\\d)?)$"
);
qregexpvalidator *preg = new
qregexpvalidator(rx,
this
);
lineedit->setvalidator(preg);
限制浮點數輸入範圍為[-90,90]並限定為小數字後4位
[cpp]view plain
copy
qregexp rx(
"^-?(90|[1-8]?\\d(\\.\\d)?)$"
);
qregexpvalidator *preg = new
qregexpvalidator(rx,
this
);
lineedit->setvalidator(preg);
簡單說明一下這幾個正規表示式:
^(-?[0]|-?[1-9][0-9])(?:\.\d)?$|(^\t?$)
(^-?180$)|(^-?1[0-7]\d$)|(^-?[1-9]\d$)|(^-?[1-9]$)|^0$
^-?(180|1?[0-7]?\d(\.\d+)?)$
^-?(180|1?[0-7]?\d(\.\d)?)$
^-?(90|[1-8]?\d(\.\d)?)$
式子中開頭的^和結尾的$限定字串的開始和結尾;
"-?" 表示乙個或0個負號,這裡面的問號表示其前面的字元重複0次或1次;
管道符「|」表示平行分組,比如後三個,表示180或其它形式;
[1-9] 表示限定數字範圍為1到9,其餘類似,如果是有限幾個值,還可以用列舉的方式,比如限定-255到255時,第乙個數字2的限定,應該表達為[1,2],這表示這個位置只允許是1或者2;
"\d"是乙個轉義字元,表示匹配一位數字;
「\.」 表示匹配小數點;
"\d+",這裡面的+表示其前面的\d重複一次或多次;
"\d",裡面的表示重複1到4次;
有了以上知識,下面我們可以很快的寫出限定[-255,255]的正規表示式:
[-255,255]整數:^-?(255|[1,2]?[0-4]?\d|[1,2]?5[0-4]?)$
[-255,255]小數:^-?(255|([1,2]?[0-4]?\d|[1,2]?5[0-4]?)(\.\d)?)$
參考:
[1]qt限制文字框輸入的方法
[2]怎麼讓qlineedit中只能輸入數字
[3]用正規表示式配出-180到180該怎麼寫
[4]求正規表示式,在-180到180之間的數字,包括浮點數
限制QLineEdit的數值輸入範圍
在使用qlineedit輸入數值時,經常遇到限制其範圍的需要,比如角太陽高度角範圍為 90,90 經度值範圍 180,180 方位角範圍 0,360 qt提供了qintvalidator和qdoublevalidator可以限定數值輸入範圍,如使用qintvalidator限制整數的數值範圍 例1 ...
限制QLineEdit的數值輸入範圍
在使用qlineedit輸入數值時,經常遇到限制其範圍的需要,比如角太陽高度角範圍為 90,90 經度值範圍 180,180 方位角範圍 0,360 qt提供了qintvalidator和qdoublevalidator可以限定數值輸入範圍,如使用qintvalidator限制整數的數值範圍 例1 ...
qt中限制QLineEdit的輸入範圍
1 輸入整數部分 lineedit setvalidator newqintvalidator 1,1000,this 但是仍然能輸入0000000 2 簡單的小數輸入 lineedit setvalidator newqdoublevalidator 180.0,180.0,6,this 3 使用...