【问题标题】:Why does my QIntValidator allow inputs not in my specified range?为什么我的 QIntValidator 允许不在我指定范围内的输入?
【发布时间】:2021-05-23 20:17:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你有研究过这种效果吗?你发现了什么?
  • 如果我读到了documentation 的权利,验证器不会阻止输入无效,而是可能 有效值(即intermediate 状态)。我假设这样的“中间”输入会在失去焦点的行编辑中被丢弃,但请自己尝试。

标签: c++ qt validation qlineedit


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多