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

时间:2014-10-13 12:37:55

标签: c++ qt qt5

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

1 个答案:

答案 0 :(得分:0)

它们是不同的方法:

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

    • 另请注意向导的自动验证:

        

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

           

      要考虑“填充”字段,QWizard只是检查字段的当前值是否与原始值(调用initializePage()时的值)相等。对于QLineEditQAbstractSpinBox子类,QWizard还会检查hasAcceptableInput()是否返回true,以兑现任何验证程序或掩码。   如你所见:它主要是一个便利功能。在处理大型项目时,它可能会让您免于重新编译大量内容。

如您所见:它主要是一种便利功能。在处理大型项目时,它可能会让您免于重新编译大量内容。