首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里控制QWizard按钮?

在哪里控制QWizard按钮?
EN

Stack Overflow用户
提问于 2010-08-04 07:23:15
回答 2查看 7.6K关注 0票数 9

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

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

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

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

而且show函数似乎不能被覆盖。

我真的不知道哪个函数是可用的。有没有像MFC中的OnSetActive或者JAVA中的Load这样的函数?当页面将要显示时,将调用哪一个?

EN

回答 2

Stack Overflow用户

发布于 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)这样的东西?

票数 9
EN

Stack Overflow用户

发布于 2010-11-23 11:01:01

要禁用next按钮,您可以子类化QWizardPage并重新实现isComplete()。当它返回true时,QWizard将启用该按钮。当您更改isComplete()的状态时,子类必须发出'completeChanged()‘信号。QWizardPage的文档解释了如何做到这一点。

也许您还可以使用

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

来隐藏按钮。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3401484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档