c++ - QT:使用字段间规则进行表单验证

标签 c++ qt

  1. 我想动态构建一个表单来编辑一组属性(比如来自 xml 文件等)。

  2. 最重要的是,我想使用一组规则(理想情况下也是动态加载的)对每个属性(强制值/可选值)执行验证。 这些规则可以关联到单个字段(允许值、范围等),但也可以链接多个字段(条件验证)。

  3. 我希望能够“即时”保存结果(一旦字段失去焦点)。

有人有好的线索可以帮助我入门吗?
以下是我目前的发现:

  1. 我可以从用于动态表单生成的 Qt 属性浏览器框架开始。我可以扩展这个框架以满足我的需要。

  2. 关于验证,我阅读了 QValidator,这似乎是一个好的开始。但是,我找不到任何涉及多个字段的东西(交叉参数验证)

  3. 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/

相关文章:

c++ - 我在链接 SDL 库时遇到问题

c++ - 传递给调整大小函数后使用 new 创建的动态数组出错

c++ - 使用 std::mutex 数组时,条件变量不会触发

c++ - 访问指针 vector ?

c++ - qt5.7中的信号与槽 - QWebEnginePage

c++ - 我如何使用 std::constructible_from

windows - 我在哪里可以获得 dll 以在 Windows 上的 Qt 中部署应用程序?

c++ - 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

c++ - Qlineedit边界

c++ - 如何实例化一个主窗口函数可以访问的对象?