我想禁用或隐藏QWizard对话框中的“返回”按钮,我该怎么做?
我查看了Qt的源代码,发现可以通过创建自定义按钮布局并在列表中省略“返回”按钮来隐藏“返回”按钮:
QList<QWizard::WizardButton> button_layout;
button_layout << QWizard::HelpButton << QWizard::Stretch <<
QWizard::NextButton << QWizard::CustomButton1 <<
QWizard::CancelButton;
this->setButtonLayout(button_layout);
调用
QWizard::button(QWizard::BackButton).hide()
在
QWizard::onCurrentIdChanged(int)
这在PyQt4中对我很有用。
这实际上会在每个向导页面上再次隐藏“后退”按钮,但它实现了期望的效果。
completeChanged
被发射时,按钮会重新出现。甚至无法将hide
连接到completeChanged
。我发现的唯一解决方案是在每次发射completeChanged
后手动调用hide
,这真的很烦人。 - johnson另一种(可能更加框架化)的方法是将QWizardPage设置为提交页面,该页面位于要禁用返回按钮的页面之前。只需在QWizardPage上调用this.setCommitPage(true)
,下一页就不会启用其后退按钮。
void QWizardPage :: setCommitPage(bool commitPage)如果commitPage为true,则将此页面设置为提交页面;否则,将其设置为普通页面。提交页面是表示无法通过单击“后退”或“取消”来撤销的操作的页面。提交页面上的“下一步”按钮将被“提交”按钮替换。单击此按钮只是调用QWizard :: next(),就像单击下一步一样。 直接从提交页面进入的页面其后退按钮将被禁用。参见isCommitPage()。
如果您希望禁用所有返回按钮,可以在每个页面上都调用它。
QWizard::BackButton
和QWizard::button(WizardButton which) const
来隐藏/禁用它。 - Kamil Klimek