问题描述
我正在尝试设置 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}}).