我的项目中有一个QLineEdit。 我想在lineEdit上使用QValidation。在
#Create lineEdit
itemValue = QtWidgets.QLineEdit()
#Create валидатор
objValidator = QtGui.QDoubleValidator(self)
#setup range
objValidator.setRange(-10.0, 100.0, 5)
#lineEdit with validation
itemValue.setValidator(objValidator)
但是不太好用。我可以输入我想要的,除了符号。 射程也不行!我可以输入100500或-100500,但我想,用户只能输入范围内的数字。在
我应该如何使用范围? 我需要帮助:)
谢谢你们的帮助,伙计们!在
默认情况下,验证器不会阻止输入超出范围的值,如果输入的值是Invalid or Intermediate,它也不会阻止用户离开行编辑。在
但是,它确实提供了一个以编程方式拒绝输入的机会,因为每当当前值不可接受时,行编辑将不会发出它的editingFinished或{a3}信号,而它的hasAcceptableInput方法将返回
False
。此外,如果您子类化验证器,您可以重新实现它的fixup方法来控制输入的值。在然而,正如已经建议的那样,一个更好/更简单的解决方案是使用
QDoubleSpinBox
,因为它会自动清理输入并提供更友好的界面。在作为替代,您可以使用QDoubleSpinBox。在
可能你在期待一些不该发生的事情。
通常,当您有验证器时,您应该能够在中间状态键入不完全符合限制的内容。但当编辑失去焦点时,这个问题应该得到解决。在
为什么?假设您有
84
并且您希望将其更正为-8.4
。很多人会这样做:加减号,所以现在你有了-84
这是不可接受的,然后加上点。如果验证器立即修复这一点,这将是恼人的用户。在所以底线是这样的“问题”发生在编辑失去焦点的时候吗?在
相关问题 更多 >
编程相关推荐