限制输入的 QSpinBox

3
我有一个QSpinBox并希望它只接受正自然数。这个功能是好的,直到我输入小数点“.”。
如果我输入234235.23456并切换到其他spinbox,该值将更改为23423523456。
因此,我正在寻找一种方法来忽略小数点后面的所有内容。
是否可以在不子类化QSpinBox的情况下实现这一点?

Qt 尊重本地化设置(如果我没记错的话),这可能会有所帮助。 - ratchet freak
3
可能不行,但是QDoubleSpinBox的setDecimals(0)可能是您的解决方法。:p 否则,只需重新实现此内容。 - László Papp
我最初尝试了带有 setDecimals(0) 的 QDoubleSpinBox,但它的行为方式相同。 - liquid.pizza
如果您输入逗号,它是否按预期工作? - Silicomancer
SpinBox 只接受 0-9 之间的数字,如果设置了 setDecimals(0),则还会接受 . - liquid.pizza
1个回答

2
我找到了解决方法:

我解决了我的问题:

QDoubleSpinBox * box = new QDoubleSpinBox();

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接