如何在QWizard中完全禁用或隐藏后退按钮?

时间:2012-01-31 00:04:35

标签: qt qt4 wizard

我想在QWizard对话框中禁用或隐藏后退按钮。我该怎么办?

3 个答案:

答案 0 :(得分:5)

我查看了Qt的来源,发现可以通过创建自定义按钮布局并省略列表中的“后退”按钮来隐藏“后退”按钮:

  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按钮。

答案 1 :(得分:5)

调用

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

QWizard::onCurrentIdChanged(int)

为我工作(在PyQt4中)。

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

答案 2 :(得分:3)

另一种方法(可能更面向框架)方法是将QWizardPage设置为提交页面,该QWizardPage位于您希望禁用后退按钮的页面之前。只需在QWizardPage上调用this.setCommitPage(true),下一页就不会启用其后退按钮。

来自QWizardPage documentation

  

void QWizardPage :: setCommitPage(bool commitPage)如果commitPage为true,则将此页面设置为提交页面;否则,将其设置为a   正常页面。提交页面是表示操作的页面   单击“上一步”或“取消”无法撤消。 “提交”按钮将替换   提交页面上的“下一步”按钮。单击此按钮只需拨打电话   QWizard :: next()就像单击Next一样。   直接从提交页面输入的页面的“后退”按钮已禁用。另请参阅isCommitPage()。

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