2012-01-31 56 views

回答

5

我已经看了Qt的来源,并发现它可能通过创建自定义的按键布局,然后在列表ommiting后退按钮隐藏后退按钮:

QList<QWizard::WizardButton> button_layout; 
    button_layout << QWizard::HelpButton << QWizard::Stretch << 
        QWizard::NextButton << QWizard::CustomButton1 << 
        QWizard::CancelButton; 
    this->setButtonLayout(button_layout); 

我希望这将节省一些时间给别人。

P.S.

AFAIU避免使用QTimer它是需要修改QWizard源代码。简单的方法是添加一个虚拟函数 virtual void buttonsUpdated(); 并从QWizard的末尾调用它: void QWizardPrivate :: _ q_updateButtonStates() 然后在QWizard子类中重新实现这个buttonsUpdated(),并在那里禁用Back按钮。

+0

你可以随时用QWizrad :: Button(WizardButton which)const'并在任何时间隐藏/禁用它QDizard :: BackButton – 2012-01-31 21:38:01

+2

你自己检查了吗?我在4.7.4上进行了检查,并没有那么简单 – Dmitriy 2012-01-31 22:00:40

4

调用

QWizard::button(QWizard::BackButton).hide() 

QWizard::onCurrentIdChanged(int) 

工作对我来说(PyQt4中)。

这有效地再次隐藏每个向导页上的后退按钮,但它达到了预期的效果。

0

另一种(也许更多面向框架)的方式将设定QWizardPage,想要后退按钮被禁用在页面之前它来的时候,是一个提交页面。在QWizardPage上调用this.setCommitPage(true),下一页不会启用其后退按钮。

QWizardPage documentation

无效QWizardPage :: setCommitPage(布尔commitPage)设置此页面是一个提交页面,如果commitPage是真实的;否则,将其设置为 正常页面。一个提交页面是代表 无法通过单击后退或取消撤消的操作页面。一个提交按钮替换 提交页面上的下一步按钮。单击此按钮只需简单地调用 QWizard :: next(),就像单击下一步(Next)一样。 一个页面直接提交页面的返回按钮禁用输入。另请参阅isCommitPage()。

如果您希望禁用所有后退按钮,您可以在每个页面上调用它。