我想动态构建一个表单来编辑一组属性(比如来自 xml 文件等)。
最重要的是,我想使用一组规则(理想情况下也是动态加载的)对每个属性(强制值/可选值)执行验证。 这些规则可以关联到单个字段(允许值、范围等),但也可以链接多个字段(条件验证)。
我希望能够“即时”保存结果(一旦字段失去焦点)。
有人有好的线索可以帮助我入门吗?
以下是我目前的发现:
我可以从用于动态表单生成的 Qt 属性浏览器框架开始。我可以扩展这个框架以满足我的需要。
关于验证,我阅读了 QValidator,这似乎是一个好的开始。但是,我找不到任何涉及多个字段的东西(交叉参数验证)
QSettings 框架很好地完成了这个自动保存功能,我想我可以重用它。
我只是想确定我没有遗漏一些现有的框架来处理我的目标,因为 这似乎是一件相对标准的事情。
最佳答案
假设表单的字段是固定的。然后,您可以使用 QValidator
的共享实例通过在 list/dictionary/< 上运行验证来验证所有字段中的文本em>map 包含指向字段的指针。 list/*dictionary*/map 必须动态填充和清除,并且指向它的指针硬编码在 QValidate::validate
。如果不允许 QValidator
共享,您将不得不创建单独的 QValidator 并执行跨领域验证。
或者,您可以使用 Qt 的 Signal-Slot 机制在字段中的文本发生更改时实现验证。
我不知道 QSetting,并且会使用完全相同的信号槽机制来进行自动保存。
关于c++ - QT:使用字段间规则进行表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12990404/