为什么我的 QIntValidator 允许输入不在我指定的范围内?

问题描述

我正在尝试设置 QIntValidator 以验证 QLineEdit 上的输入。这就是我所做的:

userInput = new QLineEdit("1");
userInput->setValidator(new QIntValidator ( 1,20,this ) );

这似乎有效:它不允许输入任何字母。但是,我可以输入超出范围的 0,我也可以输入数字,例如 21、{{ 1}} 和 39,都在 1-20 的范围之外。基本上,我希望 QIntValidator 只允许输入 1-20 范围内的数字,但相反,我发现它允许所有小于 100 的非负数输入(我也可以执行 80。)

为什么 QIntValidator 没有像我预期的那样工作,我该如何解决

解决方法

0 被接受为 QValidator::Intermediate 状态,因为用户可能打算输入例如05,这将是有效的。您将无法实际输入不需要的值。按 Return 或从小部件移动焦点后,输入字段中有 0,该值应返回到原始值(好吧,至少旋转框的行为如此,不确定 {{ 1}}).