у меня есть QLineEdit
где пользователь должен вводить только цифры.
Так есть ли настройка только для чисел QLineEdit
?
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
Это позволяет пользователю вводить несколько номеров. Смотрите также полный список символов, которые можно использовать в маске ввода.
(Мой ответ на 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);
Надеюсь, это поможет.