2014-12-03 3 views
2

У меня есть QSpinBox, и я хочу, чтобы он принимал положительные натуральные числа. Это отлично работает, пока я не введу точку .Ограничить ввод QSpinBox

Если я ввешу 234235.23456 и смените фокус на какую-либо другую спинбокс, значение будет изменено на 23423523456.

Так что я искал способ, чтобы игнорировать все позади .

Возможно ли это без подклассов QSpinBox?

+0

использовать запятую? Qt соответствует настройкам локализации (IIRC), так что может помочь –

+3

Возможно, нет, но QDoubleSpinBox с setDecimals (0) может быть вашим обходным решением. : p В противном случае просто переопределите [this] (http://doc-snapshot.qt-project.org/qt5-5.4/qspinbox.html#textFromValue). – lpapp

+0

Я сначала попробовал QDoubleSpinBox с setDecimals (0), но он действует одинаково – user2699453

ответ

2

Я нашел исправление моей porblem:

QDoubleSpinBox * box = new QDoubleSpinBox(); 

box->setDecimals(0); 
box->setSingleStep(1.0); 

box->findChild<QLineEdit*>()->setValidator(new QRegExpValidator(QRegExp(QString("^[1-9][0-9]*$")))); 
+0

Спасибо, ты только что открыл мой разум :) –

Смежные вопросы