У меня есть подкласс QWizard
, созданный мастером форм Qt Creator. Как описано в документации, я повторно реализовал nextId()
для проверки входных данных и создания нелинейного мастера. Проблема в том, что nextId()
вызывается дважды: один раз при входе на страницу и один раз при выходе. Мне нужна простая проверка полей в последнюю минуту, а затем направлять пользователя на следующую страницу или показывать сообщение об ошибке и удерживать пользователя на текущей странице.
Примечание. Я создал мастер с помощью генератора форм Qt Creator. Страницы включены в файл ui. Поэтому повторная реализация 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);
}