Cla*_*ang 9 qt qt4 wizard qt4.6
我正在使用Qt,我使用包含多个页面的QWizard对象.当涉及到特定页面时,我想首先隐藏"下一步"按钮,并在用户执行某些操作后显示它(例如单击一个单选按钮...)
我希望在显示此特定页面时对向导进行一些自定义控制.问题是,我知道如何隐藏按钮,但我不知道应该使用哪个功能.我尝试了QWizardPage构造函数,initializePage函数,"show"函数,但所有这些函数都不起作用.
如果我将按钮控件放在向导页面构造函数中,程序将崩溃,因为向导对象尚未存在.
如果我把它放在initializePage函数中,一些QWizard函数将在initializePage函数之后重置按钮,并且所有自定义设置都将消失.
并且show函数似乎无法被覆盖.
我真的无法弄清楚哪个功能可用.是否在MFC中使用OnSetActive或在JAVA中加载?当页面显示出来时会调用哪个?
最好的解决方案可能是使用提供的解决方案QWizardPage::registerField.它允许您定义必填字段/单选按钮/等.只有在填写/选中所有必填字段时,才会启用向导中的"下一步"和/"完成"按钮.
有关使用此功能的示例,请参见http://doc.trolltech.com/4.6/dialogs-licensewizard.html.
编辑:QWizard::button提供对向导中按钮的访问.你尝试过类似的东西myWizard->button(QWizard::NextButton)->setEnabled(false)吗?
要禁用下一个按钮,您可以子类化QWizardPage并重新实现isComplete(). 当它返回 true 时,QWizard将启用该按钮。当您更改 的状态时,子类必须发出“completeChanged()”信号isComplete()。的文档QWizardPage解释了如何执行此操作。
也许你也可以使用
parent->button(QWizard::NextButton)->setVisible(false)
隐藏按钮。