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