QWizard:后退按钮确认
我已经通过继承QWizard创建了一个向导,并且通过继承QWizardPage创建了我的向导页面。QWizard:后退按钮确认
我想显示一个确认对话框,当用户按下后退按钮,我想我的向导不要去前面的页面,如果用户按下在确认对话框中没有。
当点击一个QWizard对话框接下来,虚函数bool validatePage()
被调用,并允许返回false,如果我们不想进入下一个页面(例如,当有一个不完整的场)。
但是,当按返回,我不知道任何方式说“不要回去”。调用虚函数void cleanupPage()
(我可以在这里要求用户确认),但向导无论如何都会返回。
有没有可能这样做?
在此先感谢。
回答:
尝试使用void QWizardPage :: setCommitPage(bool commitPage)函数。该功能可防止用户返回页面。它设置在向导的cleanupPage():
MyWizard::cleaupPage(int id) {
//Test here if 'id' is the page that you want and the do the following
if(QMessageBox::question(...) == QMessageBox::Yes)
this->page(id)->setCommitPage(false);
else
this->page(id)->setCommitPage(true);
}
回答:
我终于实现我想要的东西(不知道这是最好的方式......)通过断开后退按钮信号,并将其连接到我的自定义插槽。
MyWizard::MyWizard(QWidget *parent) : QWizard(parent) {
// [...]
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(onPageChanged(int)));
}
void MyWizard::onPageChanged(int id)
{
disconnect(button(BackButton), SIGNAL(clicked(bool)), 0, 0);
connect(button(BackButton), SIGNAL(clicked(bool)), this, SLOT(onBackButtonClicked()));
}
void MyWizard::onBackButtonClicked()
{
if (currentId() > Page_Intro && !confirmation(tr("Are you sure you want to go back?")))
return;
back();
}
需要注意的是,如果你做向导构造的连接/断开,这是行不通的(QT连接它时,你传递的第一页)。
以上是 QWizard:后退按钮确认 的全部内容, 来源链接: utcz.com/qa/263722.html