Установите QLineEdit для приема только чисел


у меня есть QLineEdit где пользователь должен вводить только цифры.

Так что есть только цифры настройки для QLineEdit?

5 63

5 ответов:

QLineEdit::setValidator(), например:

myLineEdit->setValidator( new QIntValidator(0, 100, this) );

или

myLineEdit->setValidator( new QDoubleValidator(0, 100, 2, this) );

посмотреть: QIntValidator,QDoubleValidator,QLineEdit::setValidator

лучше QSpinBox.

и для двойного значения используйте QDoubleSpinBox.

QSpinBox myInt;
myInt.setMinimum(-5);
myInt.setMaximum(5);
myInt.setSingleStep(1);// Will increment the current value with 1 (if you use up arrow key) (if you use down arrow key => -1)
myInt.setValue(2);// Default/begining value
myInt.value();// Get the current value
//connect(&myInt, SIGNAL(valueChanged(int)), this, SLOT(myValueChanged(int)));

вы также можете установить inputMask:

QLineEdit.setInputMask("9")

это позволяет пользователю вводить только одну цифру в диапазоне от 0 до 9. Используйте несколько 9's, чтобы позволить пользователю вводить несколько номеров. Смотрите также полный список символов, которые могут быть использованы в маске ввода.

(мой ответ на Python, но это не должно быть трудно преобразовать его в C++)

почему бы вам не использовать QSpinBox для этой цели ? Вы можете установить невидимые кнопки вверх/вниз со следующей строкой кодов:

// ...
QSpinBox* spinBox = new QSpinBox( this );
spinBox->setButtonSymbols( QAbstractSpinBox::NoButtons ); // After this it looks just like a QLineEdit.
//...

Если вы используете QT Creator 5.6, вы можете сделать это следующим образом:

#include <QIntValidator>

ui->myLineEditName->setValidator( new QIntValidator);

Я рекомендую вам поставить эту строку после ui - >setupUi (this);

Я надеюсь, что это помогает.