Установите QLineEdit, чтобы принимать только номера

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

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

66

Решение

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

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

или же

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

Увидеть: QIntValidator, QDoubleValidator, QLineEdit :: setValidator

104

Другие решения

Самое лучшее 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)));
20

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

QLineEdit.setInputMask("9")

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

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

7

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

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

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

#include <QIntValidator>

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

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

Надеюсь, это поможет.

0
По вопросам рекламы [email protected]