我使用 GUI 创建了一个向导,因此我的页面都是 UI 的一部分。
现在,在其中一个页面上,我想将这些字段设为必填。从查看 API 来看,似乎有一个registerField()
函数还可以确保在填写字段之前下一个按钮不可用。但是,该函数受到保护,QWizardPage
这意味着我无法设置它。有没有办法在不需要创建新类的情况下执行这种行为?
我知道我可以创建一个新类,但我正在考虑是否创建更多页面,然后我需要为我拥有的每个页面创建类。我还认为对于这样一个简单的案例,感觉有点矫枉过正。
Qt 以这种方式设计 QWizardPage 是因为它是负责字段逻辑的页面,而不是其他类。但是如果你仍然想使用这个(设计不好的)模式,你可以简单地创建带有公共成员的 QWizardPage 包装器,它调用受保护的成员,并使用它来代替 QWizardPage。请记住,页面有一些逻辑,将这些逻辑与其他类分开会更好。此外,如果您有一些类似的页面,您可以重用一个带有一些参数的类
要使用 registerField 将字段设置为必填项,您只需将其名称设置为以“*”结尾。
前任:
QLineEdit* nameLineEdit = new QLineEdit();
registerField("name*", nameLineEdit);
这样,只有当您在 nameLineEdit 中写入内容时,才会启用继续按钮。请检查文档QWizardField#registerField。