我想在QWizard对话框中禁用或隐藏后退按钮。我该怎么办?
答案 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)
,下一页就不会启用其后退按钮。
void QWizardPage :: setCommitPage(bool commitPage)如果commitPage为true,则将此页面设置为提交页面;否则,将其设置为a 正常页面。提交页面是表示操作的页面 单击“上一步”或“取消”无法撤消。 “提交”按钮将替换 提交页面上的“下一步”按钮。单击此按钮只需拨打电话 QWizard :: next()就像单击Next一样。 直接从提交页面输入的页面的“后退”按钮已禁用。另请参阅isCommitPage()。
如果您希望禁用所有后退按钮,则可以在每个页面上调用它。