Что я пытаюсь сделать
Я пытаюсь создать подкласс QWizardPage, который выглядит примерно так, но имеет небольшую настройку. Я хочу отключить следующую кнопку, когда переменная счетчика больше 0. (Она не может быть 0 с самого начала из-за некоторых функций, которые требуют, чтобы она переходила x..x-1...0).
Что я пробовал
Переопределите isComplete() и выдайте completeChanged() в конструкторе
bool DemoWizardPage::isComplete()
{
return ! (counter > 0); //Also tried just return false;
}
Переопределите initializePage
и отключите кнопку "Далее" оттуда
void DemoWizardPage::initializePage()
{
qDebug() << "QWizardPage:: initialize page";
if (!this->isComplete())
{
qDebug() << "try to turn off next button";
wizard()->button(QWizard::NextButton)->setDisabled(true);
qDebug() << "next button enabled? "
<< wizard()->button(QWizard::NextButton)->isEnabled();
}
}
Результаты на данный момент
Из пошагового кода я вижу, что следующая кнопка отключена при загрузке страницы. Но затем он снова включается из-за этих 2 строк в QWizardPrivate (взято из qwizard.cpp)
bool complete = page && page->isComplete();
btn.next->setEnabled(canContinue && complete);
Я весьма озадачен тем, почему isComplete() возвращает true здесь. Я имею в виду, что я установил свой счетчик на 2 в начале и никогда не уменьшал его. (И да, я испускаю completeChanged()
всякий раз, когда устанавливаю счетчик).
Любые идеи?