2

我的项目中有一个 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,但我希望,该用户只能输入范围内的数字。

我应该如何使用范围?我需要帮助:)

谢谢你们的帮助,伙计们!

4

3 回答 3

4

By default, a validator will not prevent values outside the range from being entered, and it won't prevent the user leaving the line-edit if the entered value is Invalid or Intermediate.

However, it does give you an opportunity to reject the input programmatically, because whenever the current value is unacceptable, the line-edit won't emit its editingFinished or returnPressed signals, and its hasAcceptableInput method will return False. In addition, if you subclass the validator, you can reimplement its fixup method to control the values that are entered.

However, as has been suggested already, a far better/simpler solution is to use a QDoubleSpinBox, since it cleans up the input automatically and provides a more user-friendly interface.

于 2014-03-14T21:30:06.783 回答
3

作为替代方案,您可以使用QDoubleSpinBox

  • 内置验证器
  • 防止输入时输入无效
  • 具有内置 setRange()
  • 并添加一个小句柄来更改更多面向鼠标的用户的值。
于 2014-03-14T14:34:59.143 回答
0

可能你正在期待一些不应该发生的事情。
一般来说,当你有验证器时,你应该能够在中间状态输入一些不完全符合限制的东西。但这应该在编辑器失去焦点时修复。

为什么?想象一下,你有 84一个你想要纠正这个的-8.4。很多人会这样做:加减号,所以现在你有-84这是不可接受的,然后加点。如果验证器立即修复此问题,这对用户来说会很烦人。

那么当编辑器失去焦点时,这个“问题”会发生吗?

于 2014-03-14T14:54:35.137 回答