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