设置QLineEdit只接受数字

我有一个QLineEdit用户只能input数字。

那么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") 

这允许用户只键入从09一个数字。 使用多个9来允许用户input多个号码。 另请参阅可在input掩码中使用的完整字符列表 。

(我的答案是在Python中,但不应该很难将其转换为C ++)

为什么不使用QSpinBox来达到这个目的呢? 您可以使用以下代码行将上/下button设置为不可见:

 // ... 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); 

我build议你在ui-> setupUi(this)之后加上那一行。

我希望这有帮助。