Qt验证器 - 如何拒绝中间结果?

时间:2014-03-26 16:24:16

标签: c++ qt validation qlineedit

据我了解,验证器可以返回三个结果:无效,中间和可接受。 假设我的行编辑具有使用以下正则表达式设置的正则表达式验证器:

[ab][cd]

因此,有效值包括:acadbcbd

如果我尝试输入任何其他字符,例如e0,则线路编辑将不允许我进行物理输入。但是,如果我输入a并切换到另一个控件,它将没有任何问题,尽管值a是不可接受的,而是中间的。

这就是我所追求的。如果输入不可接受,我希望行编辑拒绝将焦点切换到任何其他控件。也就是说,我需要输入一个完全满足我的正则表达式的行,以便我可以切换焦点。否则我希望我的表单/对话框等拒绝我切换焦点的能力。

是否有直接的单行方式来执行此操作或我是否必须手动执行此操作?如果是后者,这样做的标准方法是什么?

1 个答案:

答案 0 :(得分:1)

有一个QApplication::focusChanged()信号。您可以捕获它,并在窗口小部件的结果有效或中间时明确签入,并采取适当的措施。

我不知道单线解决方案,但它可能仍然存在。我的解决方案更加手动。

另见What is the signal for when a widget loses focus?