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