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

Dmi*_*riy 5 qt qt4 wizard

我想禁用或隐藏QWizard对话框中的后退按钮.我该怎么做?

Dmi*_*riy 5

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

  QList<QWizard::WizardButton> button_layout;
  button_layout << QWizard::HelpButton << QWizard::Stretch <<
                   QWizard::NextButton << QWizard::CustomButton1 <<
                   QWizard::CancelButton;
  this->setButtonLayout(button_layout);
Run Code Online (Sandbox Code Playgroud)

我希望这会节省一些时间.

PS

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

  • 你自己检查过吗?我在4.7.4上检查了它并没有那么简单 (2认同)

Pat*_*ker 5

调用

QWizard::button(QWizard::BackButton).hide()
Run Code Online (Sandbox Code Playgroud)

QWizard::onCurrentIdChanged(int)
Run Code Online (Sandbox Code Playgroud)

为我工作(在PyQt4中).

这有效地在每个向导页面上再次隐藏了后退按钮,但它实现了所需的效果.


Pet*_*aft 5

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

来自QWizardPage 文档

void QWizardPage::setCommitPage(bool commitPage)如果 commitPage 为 true,则将此页面设置为提交页面;否则,将其设置为普通页面。提交页面是代表无法通过单击“后退”或“取消”来撤消的操作的页面。提交按钮取代了提交页面上的下一步按钮。单击此按钮只需调用 QWizard::next(),就像单击“下一步”一样。 直接从提交页面进入的页面的后退按钮被禁用。另请参见 isCommitPage()。

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