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

Why does my QIntValidator allow inputs not in my specified range?

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

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

这似乎有效:它不允许输入任何字母。但是,我可以输入超出范围的 0,我也可以输入数字,例如 213980,都超出了 1-20 的范围。基本上,我希望 QIntValidator 只允许 1-20 范围内的数字输入,但是,相反,我发现它允许所有小于 100 的非负数字输入(我也可以做 00000.)

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

0 被接受为 QValidator::Intermediate 状态,因为用户可能打算键入例如05,这是有效的。您实际上无法 输入 不需要的值。在您按 Return 或将焦点从小部件移开后,输入字段中有 0,值应该 return 到原始值(好吧,至少 spinboxes 是这样的,不确定 QLineEdit).