-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcustomvalidator.h
More file actions
32 lines (28 loc) · 1.42 KB
/
customvalidator.h
File metadata and controls
32 lines (28 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* Создаем свой валидатор для проверки вещественных чисел на основе QDoubleValidator
* т.к. у QDoubleValidator изначально допучкается только ввод ",", а формат double
* поддерживает только точки. Поддержим ввод и того и другого, но
* воспринисать все это будем как точки
* */
#ifndef CUSTOMVALIDATOR_H
#define CUSTOMVALIDATOR_H
#include <QDoubleValidator>
#include <QStringList>
#include <QString>
#include "ostream"
class CustomValidator : public QDoubleValidator{
QStringList _decimalPoints;
public:
CustomValidator(){
_decimalPoints.append(".");
_decimalPoints.append(","); //почему-то не вышло, поддерживается ввод только точки
}
State validate(QString &str, int &pos) const{
str.replace(",","."); //т.к. запятая тоже допустимый символ, сразу меняем его на точку
QString s(str);
for(QStringList::ConstIterator point = _decimalPoints.begin(); point != _decimalPoints.end(); point++){
s.replace(*point, locale().decimalPoint()); // заменяем на допустимые символы
}
return QDoubleValidator::validate(s, pos);
}
};
#endif // CUSTOMVALIDATOR_H