QLineEdit без десятичной точки

Я хочу, чтобы QLineEdit принимал только числа без десятичных знаков, например, он должен принимать «456», но не «456.3434», т.е. он вообще не должен допускать десятичной дроби. Может ли кто-нибудь дать несколько советов, как я могу это сделать.

Я пытался использовать QIntValidator, но он по-прежнему позволяет вводить десятичную точку, а когда я конвертирую текст из QLinEdit, он возвращает ноль (как говорится в документации, если преобразование завершится неудачно, он вернет ноль).

Я также пытался использовать QRegExpValidator( QRegExp("[0-9]"), но он допускает только одно число. Максимальное число не ограничено, как мне указать QRegExp с минимальным значением 0 и максимальным значением undefined, если QRegExpValidator - единственный способ добиться этого?

Спасибо


person user1703942    schedule 04.12.2014    source источник


Ответы (1)


Вы можете попробовать следующий валидатор:

QLineEdit le;
le.setValidator(new QRegExpValidator(QRegExp("[0-9]+")));
le.show();

ОБНОВЛЕНИЕ

Чтобы разрешить ввод в экспоненциальной форме, вы можете попробовать следующее:

le.setValidator(new QRegExpValidator( QRegExp("[0-9]+e[0-9]+")));
person vahancho    schedule 04.12.2014
comment
Большое спасибо @vahancho. Это сработало отлично. Что, если я хочу, чтобы он также принимал число в экспоненциальной форме, например, 1e10? - person user1703942; 04.12.2014
comment
Спасибо @Ваханчо. Еще один вопрос, могу ли я установить максимальное ограничение? Мне нужно число от 0 до 2000000000 без экспоненциальной и десятичной точки. - person user1703942; 05.12.2014