使用 XML 模式类型进行 Qt GUI 输入验证

Posted

技术标签:

【中文标题】使用 XML 模式类型进行 Qt GUI 输入验证【英文标题】:Qt GUI input validation with XML schema types 【发布时间】:2012-01-20 11:32:01 【问题描述】:

我们正在开发一个应该提供 Qt GUI 来写入 XML 文件的跨平台。将有一组可配置的 XML 元素/属性,可以在 Qt GUI 中使用 QLineEdit 等进行修改。

我们如何添加符合 XML 模式中定义的类型的输入验证?类型都是simpleType 比如:

<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="100"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

没有为所有 xml 模式类型重新实现输入验证,还有其他可行的方法。我的想法是为当前可见的输入字段及其输入创建 XML Schema 和 XML 文档,使用 QXmlSchema 对其进行验证,然后显示验证错误消息。然而,这似乎过于复杂并且可能会很慢。

【问题讨论】:

【参考方案1】:

Here 是 XML 模式验证器的一个很好的例子。在示例中,模式通过 QPushButton 进行验证,但您可以在编辑完成或文本更改后执行此操作。

【讨论】:

或许你可以对这篇文章的内容做一个简短的总结?我知道几乎不可能想出一个像 Qt 提供的那样彻底的解释,但我认为 SO 旨在尽可能地自包含(即对外部资源的依赖很少)。 在文章中,XML 输入已根据从磁盘加载的预定义模式进行验证。据我了解,您有多个要验证的模式。因此,使用这种方法,您可以遍历它们。但是,如果您的数量很大,这将变得很难看。 @Neox:我也看过示例应用程序,但这与我的想法基本相同,即动态创建 XML 文档和模式然后进行验证。我有一个基于simpleType 的可变用户可配置数量的字段,例如我需要验证的年龄。我不想验证所有内容,而是想找到一种方法来单独验证每个字段,以便能够向用户提供即时反馈。

以上是关于使用 XML 模式类型进行 Qt GUI 输入验证的主要内容,如果未能解决你的问题,请参考以下文章

QT 小部件与 QT GUI

使用 Qt 进行序列化

输入类型文件无法使用 bootstrapvalidator 进行验证

C++实现BFRKKMP和BM~Qt6完成GUI

C++实现BFRKKMP和BM~Qt6完成GUI

C++实现BFRKKMP和BM~Qt6完成GUI