向导中的必填字段

时间:2012-06-14 09:32:04

标签: c++ qt

我使用GUI创建了一个向导,因此我的页面都是UI的一部分。

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

我知道我可以创建一个新类,但我正在考虑如果我创建更多页面,那么我需要为每个页面创建类。我还想到了简单的情况,感觉有点像矫枉过正。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

例如:

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

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