我使用的是Qt,我使用的是一个包含多个页面的QWizard对象。当涉及到特定页面时,我希望首先隐藏“下一步”按钮,并在用户执行某些操作(例如单击单选按钮...)后显示它。
当这个特定的页面出现时,我想对向导进行一些自定义控制。问题是,我知道如何隐藏按钮,但我不知道我应该使用哪个功能。我尝试了QWizardPage构造函数、initializePage函数、"show“函数,但所有这些函数都不起作用。
如果我将按钮控件放在向导页构造函数中,程序将崩溃,因为向导对象还不在那里。
如果我把它放在initializePage函数中,一些QWizard函数会在initializePage函数之后重置按钮,所有的自定义设置都会消失。
而且show函数似乎不能被覆盖。
我真的不知道哪个函数是可用的。有没有像MFC中的OnSetActive或者JAVA中的Load这样的函数?当页面将要显示时,将调用哪一个?
发布于 2010-08-04 14:16:12
最好的解决方案可能是使用QWizardPage::registerField提供的解决方案。它允许您定义必填字段/单选按钮等,并且只有在填写/选中所有必填字段时,向导中的Next和/或Finish按钮才会启用。
有关使用此功能的示例,请参阅http://doc.trolltech.com/4.6/dialogs-licensewizard.html。
编辑:QWizard::button提供对向导中按钮的访问。你有没有尝试过像myWizard->button(QWizard::NextButton)->setEnabled(false)这样的东西?
发布于 2010-11-23 11:01:01
要禁用next按钮,您可以子类化QWizardPage并重新实现isComplete()。当它返回true时,QWizard将启用该按钮。当您更改isComplete()的状态时,子类必须发出'completeChanged()‘信号。QWizardPage的文档解释了如何做到这一点。
也许您还可以使用
parent->button(QWizard::NextButton)->setVisible(false)
来隐藏按钮。
https://stackoverflow.com/questions/3401484
复制相似问题