Ich habe eine QLineEdit
, in der der Benutzer nur Zahlen eingeben soll.Stellen Sie QLineEdit so ein, dass nur Zahlen akzeptiert werden.
Also gibt es eine Einstellung nur Zahlen für QLineEdit
?
Ich habe eine QLineEdit
, in der der Benutzer nur Zahlen eingeben soll.Stellen Sie QLineEdit so ein, dass nur Zahlen akzeptiert werden.
Also gibt es eine Einstellung nur Zahlen für QLineEdit
?
QLineEdit::setValidator()
, zum Beispiel:
myLineEdit->setValidator(new QIntValidator(0, 100, this));
oder
myLineEdit->setValidator(new QDoubleValidator(0, 100, 2, this))
Siehe auch: QIntValidator, QDoubleValidator, QLineEdit::setValidator
Die beste QSpinBox
ist.
Und für einen doppelten Wert verwenden Sie 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)));
Auch wenn das OP mit einem QLineEdit arbeiten möchte, ist die Verwendung einer QSpinBox definitiv der beste Ansatz. – DrHaze
Dies funktioniert, wenn der Nummernbereich klein ist. Denken Sie darüber nach, dass Sie dieses Widget für Alter oder ID verwenden möchten. – Steve
eine Möglichkeit, die Spinbox Tastatur-freundlicher zu machen, nur mit Zifferntasten, Dezimaltrennzeichen und Rücktaste zu arbeiten? – Micka
Sie könnten auch ein inputMask
gesetzt:
QLineEdit.setInputMask("9")
Dies ermöglicht dem Benutzer nur eine Ziffer 0
-9
bis hin zu geben. Verwenden Sie mehrere 9
, damit der Benutzer mehrere Zahlen eingeben kann. Siehe auch die komplette list of characters that can be used in an input mask.
(Meine Antwort ist in Python, aber es sollte nicht schwer sein, sie zu C verwandeln ++)
Warum Sie keine QSpinBox
für diesen Zweck verwenden? Sie können die Auf-/Ab-Tasten unsichtbar mit der folgenden Zeile von Codes eingestellt:
// ...
QSpinBox* spinBox = new QSpinBox(this);
spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); // After this it looks just like a QLineEdit.
//...
Wenn Sie mit Qt Creator 5.6 Sie, dass wie dies tun können:
#include <QIntValidator>
ui->myLineEditName->setValidator(new QIntValidator);
Ich empfehle Ihnen setzen, dass Zeile nach ui-> setupUi (this);
Ich hoffe, das hilft.
Ihr Konstruktoraufruf sollte 'new QIntValidator (this)' sein, sonst wird das Validator-Objekt auslaufen, sobald Ihr Widget den Gültigkeitsbereich verlässt. – Alexandros
Kann dies vom Qt Designer aus geschehen, oder ist das nur über Code möglich? – sashoalm
Nach meinem Wissen gibt es keine Möglichkeit, dies in Designer zu tun. – Chris
Dies ist eine schnelle Lösung, wenn Sie Eingaben in wissenschaftlicher Notation benötigen (z. B. '3.14e-7'). 'QDoubleSpinBox' akzeptiert keine Zahlen in wissenschaftlicher Notation (Qt 5.5). –