Ho un QLineEdit
in cui l'utente deve immettere solo numeri.Imposta QLineEdit per accettare solo numeri
Quindi c'è un numero solo per QLineEdit
?
Ho un QLineEdit
in cui l'utente deve immettere solo numeri.Imposta QLineEdit per accettare solo numeri
Quindi c'è un numero solo per QLineEdit
?
QLineEdit::setValidator()
, ad esempio:
myLineEdit->setValidator(new QIntValidator(0, 100, this));
o
myLineEdit->setValidator(new QDoubleValidator(0, 100, 2, this))
See: QIntValidator, QDoubleValidator, QLineEdit::setValidator
Il migliore è QSpinBox
.
E per un valore doppio utilizzare 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)));
Anche se l'OP vuole lavorare con un QLineEdit, l'utilizzo di un QSpinBox è sicuramente l'approccio migliore. – DrHaze
Funziona quando l'intervallo di numeri è piccolo. Pensa che potresti voler utilizzare questo widget per età o id. – Steve
un modo per rendere la casella di selezione più facile da usare con le chiavi numeriche, separatore decimale e backspace? – Micka
si potrebbe anche impostare un inputMask
:
QLineEdit.setInputMask("9")
Questo permette all'utente di digitare solo una cifra che varia 0
-9
. Utilizzare più 9
per consentire all'utente di inserire più numeri. Vedi anche il completo list of characters that can be used in an input mask.
(La mia risposta è in Python, ma non dovrebbe essere difficile da trasformarlo in C++)
Perché non utilizzare un QSpinBox
per questo scopo? È possibile impostare i tasti su/giù invisibili con la seguente riga di codice:
// ...
QSpinBox* spinBox = new QSpinBox(this);
spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); // After this it looks just like a QLineEdit.
//...
Se stai usando Qt Creator 5.6 si può fare in questo modo:
#include <QIntValidator>
ui->myLineEditName->setValidator(new QIntValidator);
raccomando metti che riga dopo ui-> setupUi (questo);
Spero che questo aiuti.
L'invocazione del costruttore deve essere 'new QIntValidator (this)', altrimenti l'oggetto validatore verrà perso non appena il widget diventa fuori portata. – Alexandros
Questa operazione può essere eseguita da Qt Designer oppure è possibile solo tramite il codice? – sashoalm
Per quanto ne so, non c'è modo di farlo nel designer. – Chris
Questa è una soluzione rapida se è necessario un input fornito in notazione scientifica (ad es., '3.14e-7'). 'QDoubleSpinBox' non accetta numeri in notazione scientifica (Qt 5.5). –