QWizard:QWizardPage::registerField vs共享对象指针



查看Qt文档,处理页面之间共享对象的正确方法是使用QWizardPage::registerField和QWizardPage::field。我个人认为更简单的是,因为我们在C++下,在它们的构造函数中向QWizardPage传递一个指向我的共享对象的指针,因为对共享资源的cuncurrent访问没有风险。每个QWizardPage都会安全地更改该对象的值,并且在页面之间共享,因为指针位置相同。我错过了什么?为什么需要这样的方法?

它们是不同的方法:

  • 使用共享指针,您需要为每个想要共享的对象指定一个成员,这意味着您需要更改类的接口
  • 对于field-API,您不会更改接口,则不会在接口中定义存在哪些字段。这意味着您应该单独记录它们。在我看来,当拥有众多领域时,这似乎是更好的方式。

    • 还要注意向导的自动验证:

      如果在注册属性时在名称后附加了星号(*),则该字段为必填字段。当页面具有必填字段时,只有在填写了所有必填字段时才启用下一步和/或完成按钮。

      为了考虑字段"已填充",QWizard只需检查字段的当前值是否等于原始值(调用initializePage()时的值)。对于QLineEditQAbstractSpinBox子类,QWizard还检查hasAcceptableInput()是否返回true,以尊重任何验证器或掩码。正如你所看到的:这主要是一个方便功能。在处理更大的项目时,它可能会使您免于重新编译大量内容。

正如你所看到的:这主要是一个方便功能。在处理更大的项目时,它可能会使您免于重新编译大量内容。

相关内容

  • 没有找到相关文章

最新更新