QT的QIntValidator類的使用
阿新 • • 發佈:2020-12-15
詳細說明
QIntValidator類提供了一個驗證程式,可確保字串包含指定範圍內的有效整數。
使用示例:
QValidator *validator = new QIntValidator(100, 999, this);
QLineEdit *edit = new QLineEdit(this);
// the edit lineedit will only accept integers between 100 and 999
edit->setValidator(validator);
下面我們提供一些驗證器示例。實際上,它們通常將與上面的示例中的視窗小部件相關聯。
QString str;
int pos = 0;
QIntValidator v(100, 900, this);
str = "1";
v.validate(str, pos); // returns Intermediate
str = "012";
v.validate(str, pos); // returns Intermediate
str = "123";
v.validate(str, pos); // returns Acceptable
str = "678";
v.validate( str, pos); // returns Acceptable
str = "999";
v.validate(str, pos); // returns Intermediate
str = "1234";
v.validate(str, pos); // returns Invalid
str = "-123";
v.validate(str, pos); // returns Invalid
str = "abc";
v.validate(str, pos) ; // returns Invalid
str = "12cm";
v.validate(str, pos); // returns Invalid
請注意,值999返回中級。由等於或小於最大值的數字組成的值被視為中間值。這是因為阻止數字不在範圍內的數字不一定是最後輸入的數字。這也意味著中間數可以具有前導零。
可以通過setRange()一次呼叫來設定最小值和最大值,或者分別通過setBottom()和setTop()來設定最小值和最大值。
QIntValidator使用其locale()來解釋數字。例如,在阿拉伯語語言環境中,QIntValidator將接受阿拉伯數字。
注意:在locale()上設定的QLocale :: NumberOptions也影響數字的解釋方式。例如,由於預設情況下未設定QLocale :: RejectGroupSeparator,因此驗證程式將接受組分隔符。因此,建議使用QLocale :: toInt()獲得數值。