据我了解,验证器可以返回三个结果:无效,中间和可接受。 假设我的行编辑具有使用以下正则表达式设置的正则表达式验证器:
[ab][cd]
因此,有效值包括:ac
,ad
,bc
,bd
:
如果我尝试输入任何其他字符,例如e
或0
,则线路编辑将不允许我进行物理输入。但是,如果我输入a
并切换到另一个控件,它将没有任何问题,尽管值a
是不可接受的,而是中间的。
这就是我所追求的。如果输入不可接受,我希望行编辑拒绝将焦点切换到任何其他控件。也就是说,我需要输入一个完全满足我的正则表达式的行,以便我可以切换焦点。否则我希望我的表单/对话框等拒绝我切换焦点的能力。
是否有直接的单行方式来执行此操作或我是否必须手动执行此操作?如果是后者,这样做的标准方法是什么?
答案 0 :(得分:1)
有一个QApplication::focusChanged()信号。您可以捕获它,并在窗口小部件的结果有效或中间时明确签入,并采取适当的措施。
我不知道单线解决方案,但它可能仍然存在。我的解决方案更加手动。