c++ - Qt Validators - 我如何拒绝中间结果?

标签 c++ qt validation qlineedit

据我了解,验证器可以返回三个结果:无效、中等和可接受。 假设我的行编辑有一个带有以下正则表达式的正则表达式验证器集:

[ab][cd]

因此,有效值为:acadbcbd:

如果我尝试输入任何其他字符,例如 e0,行编辑将不允许我实际输入。但是,如果我输入 a 并切换到另一个控件,它不会有任何问题,尽管值 a 是 Not Acceptable ,而是中间值。

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

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

最佳答案

有一个QApplication::focusChanged()信号。您可以捕获它,如果您的小部件的结果是有效的或中间的,则明确地检查它,并采取适当的行动。

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

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

关于c++ - Qt Validators - 我如何拒绝中间结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667229/

相关文章:

java - Hibernate 验证 - 使用 @GroupSequence 对嵌套类进行分组

validation - 使用paypal查询用户真实身份

c++ - C++ 命名空间内的外部 "C"链接?

c++ - 没有运算符 "<<"匹配

c++ - QTreeView/QFileSystemModel 设置标题标签

c++ - 用于将 std::string 转换为 QString 的包装器?

c++ - 从给定字符串中查找长度为 k 的所有排列/组合

c++ - 如何替换双端队列对象中的元素?

c++ - Qt 小部件在其他非 qt 窗口之上

不需要 Laravel 验证,但仍然像需要一样返回