9

我正在使用 Qt,并且我使用包含多个页面的 QWizard 对象。当涉及到特定页面时,我想先隐藏“下一步”按钮,并在用户执行某些操作后显示它(例如单击单选按钮...)

当这个特定页面出现时,我想对向导进行一些自定义控制。问题是,我知道如何隐藏按钮,但我不知道应该使用哪个功能。我尝试了 QWizardPage 构造函数、initializePage 函数、“show”函数,但所有这些函数都不起作用。

如果我将按钮控件放在向导页面构造函数中,程序将崩溃,因为向导对象还不存在。

如果我把它放在initializePage函数中,一些QWizard函数会在initializePage函数之后重置按钮,所有自定义设置都会消失。

并且显示功能似乎无法被覆盖。

我真的无法弄清楚哪个功能可用。有没有像 MFC 中的 OnSetActive 或 JAVA 中的加载之类的功能?当页面要显示出来时会调用哪个?

4

2 回答 2

9

最好的解决方案可能是使用QWizardPage::registerField. 它允许您定义必填字段/单选按钮/等。只有在填写/检查了所有必填字段后,才会启用向导中的下一步和/或完成按钮。

有关使用此功能的示例,请参阅http://doc.trolltech.com/4.6/dialogs-licensewizard.html 。

编辑:QWizard::button提供对向导中按钮的访问。你试过类似的东西myWizard->button(QWizard::NextButton)->setEnabled(false)吗?

于 2010-08-04T06:16:11.640 回答
4

要禁用下一个按钮,您可以继承QWizardPage并重新实现isComplete(). 当它返回 true 时,QWizard将启用该按钮。当您更改isComplete(). 的文档QWizardPage解释了如何做到这一点。

可能你也可以使用

parent->button(QWizard::NextButton)->setVisible(false)

隐藏按钮。

于 2010-11-23T03:01:01.163 回答