Имам подклас от QWizard
, генериран от съветника за формуляри на Qt Creator. Както е описано в документите, внедрих отново nextId()
за валидиране на входове и създаване на нелинеен съветник. Проблемът е, че nextId()
се извиква два пъти: веднъж при влизане в страницата и веднъж при излизане. Имам нужда от проста проверка в последната минута на полетата и след това превеждане на потребителя през следващата страница или показване на съобщение за грешка и задържане на потребителя в текущата страница.
Забележка: Направих съветника с помощта на генератора на формуляри на Qt Creator. Страниците са включени в потребителския файл. Така че повторното внедряване на QWizardPage::nextId()
не е опция.
Актуализация: Ето кода:
int WizardBackupDatabase::nextId() const
{
Page nextPage;
Page currentPageType = static_cast<Page>(currentId());
qDebug() << currentId(); // This prints twice
switch (currentPageType) {
case Page::Intro:
nextPage = Page::DataSource;
break;
case Page::DataSource:
if(checkSource()) {
nextPage = Page::Settings;
}
else {
nextPage = Page::DataSource;
}
break;
case Page::Settings:
if(checkSettings()) {
nextPage = Page::Verify;
}
else {
nextPage = Page::Settings;
}
break;
case Page::Verify:
nextPage = Page::Operation;
break;
case Page::Operation:
return -1;
default:
return -1;
}
return static_cast<int>(nextPage);
}