Как полностью отключить или скрыть кнопку Назад в QWizard? - PullRequest
5 голосов
/ 31 января 2012

Я хочу отключить или скрыть кнопку Назад в диалоговом окне QWizard.Как я могу это сделать?

Ответы [ 3 ]

5 голосов
/ 17 января 2013

Calling

QWizard::button(QWizard::BackButton).hide()

в

QWizard::onCurrentIdChanged(int)

у меня сработало (в PyQt4).

Это эффективно скрывает кнопку «Назад» на каждой странице мастера, но оно достигает желаемого эффекта.

5 голосов
/ 31 января 2012

Я посмотрел источники Qt и обнаружил, что можно скрыть кнопку Назад, создав пользовательский макет кнопки и пропустив кнопку Назад в списке:

  QList<QWizard::WizardButton> button_layout;
  button_layout << QWizard::HelpButton << QWizard::Stretch <<
                   QWizard::NextButton << QWizard::CustomButton1 <<
                   QWizard::CancelButton;
  this->setButtonLayout(button_layout);

Надеюсь, это сэкономит некоторое время наКто-нибудь.

PS

AFAIU, чтобы избежать использования QTimer, необходимо изменить исходный код QWizard.Легким способом будет добавить виртуальную функцию virtual void buttonsUpdated ();и вызовите его с конца QWizard'а: void QWizardPrivate :: _ q_updateButtonStates () Затем переопределите this buttonsUpdated () в подклассе QWizard и отключите кнопку Назад там.

3 голосов
/ 09 февраля 2017

Альтернативным (возможно, более ориентированным на фреймворк) способом было бы установить QWizardPage, которая находится перед страницей, на которой вы хотите отключить кнопку возврата, как страницу фиксации. Просто вызовите this.setCommitPage(true) на QWizardPage, и на следующей странице не будет включена кнопка возврата.

из документации QWizardPage

void QWizardPage :: setCommitPage (bool commitPage) Устанавливает эту страницу как страницу фиксации, если commitPage имеет значение true; в противном случае устанавливает его как нормальная страница. Страница фиксации - это страница, которая представляет действие, которое нельзя отменить, нажав кнопку Назад или Отмена. Кнопка фиксации заменяет Следующая кнопка на странице фиксации. Нажатие на эту кнопку просто вызывает QWizard :: next () так же, как нажатие Next. На странице, введенной непосредственно со страницы фиксации, кнопка Назад отключена. См. Также isCommitPage ().

Если вы хотите, чтобы все кнопки «Назад» были отключены, вы можете просто вызывать их на каждой странице.

...