向导中的必填字段

Mandatory fields in Wizard

本文关键字:字段 向导      更新时间:2023-10-16

我已经使用GUI创建了一个向导,所以我的页面都是UI的一部分。

现在,在其中一个页面上,我想使字段成为必填字段。从查看 API 来看,似乎有一个registerField()函数,该函数还可以确保在填写字段之前下一个按钮不可用。但是,该功能受QWizardPage保护,这意味着我无法设置它。有没有办法在不需要创建新类的情况下执行此行为?

我知道我可以创建一个新类,但我正在考虑如果我创建更多页面,那么我需要为我拥有的每个页面创建类。我也认为对于这样一个简单的案例,感觉有点矫枉过正。

Qt以这种方式设计QWizardPage,因为它是负责字段逻辑的页面,而不是其他类。但是如果你仍然想使用这个(设计不好的)模式,你可以简单地创建带有公共成员的QWizardPage包装器,该包装器调用受保护的成员,并使用它代替QWizardPage。请记住,页面有一些逻辑,最好将该逻辑与其他类分开。此外,如果你有一些类似的页面,你可以重用一个带有一些参数的类

要使用 registerField 将字段设置为必填字段,您只需设置其名称结尾为"*"。

前任:

QLineEdit* nameLineEdit = new QLineEdit();    
registerField("name*", nameLineEdit);

这样,只有当您在 nameLineEdit 中写入某些内容时,才会启用继续的按钮。请查看文档 QWizardField#registerField。