查看Qt文档,处理页面之间共享对象的正确方法是使用QWizardPage::registerField和QWizardPage::field。我个人认为更简单的是,因为我们在C++下,在它们的构造函数中向QWizardPage传递一个指向我的共享对象的指针,因为对共享资源的cuncurrent访问没有风险。每个QWizardPage都会安全地更改该对象的值,并且在页面之间共享,因为指针位置相同。我错过了什么?为什么需要这样的方法?
它们是不同的方法:
- 使用共享指针,您需要为每个想要共享的对象指定一个成员,这意味着您需要更改类的接口
-
对于
field
-API,您不会更改接口,但则不会在接口中定义存在哪些字段。这意味着您应该单独记录它们。在我看来,当拥有众多领域时,这似乎是更好的方式。-
还要注意向导的自动验证:
如果在注册属性时在名称后附加了星号(
*
),则该字段为必填字段。当页面具有必填字段时,只有在填写了所有必填字段时才启用下一步和/或完成按钮。为了考虑字段"已填充",
QWizard
只需检查字段的当前值是否等于原始值(调用initializePage()
时的值)。对于QLineEdit
和QAbstractSpinBox
子类,QWizard
还检查hasAcceptableInput()
是否返回true
,以尊重任何验证器或掩码。正如你所看到的:这主要是一个方便功能。在处理更大的项目时,它可能会使您免于重新编译大量内容。
-
正如你所看到的:这主要是一个方便功能。在处理更大的项目时,它可能会使您免于重新编译大量内容。