2012-01-31 8 views

Respuesta

5

He mirado en las fuentes de Qt y descubrí que es posible ocultar el botón Atrás creando disposición de los botones personalizados y ommiting botón Atrás en la lista:

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

espero que esto ahorrará algo de tiempo para que alguien .

P.S.

AFAIU para evitar el uso de QTimer es necesario modificar el código fuente de QWizard. La manera más fácil será agregar una función virtual virtual void ButtonUpdated(); y llámalo desde el final de QWizard's: void QWizardPrivate :: _ q_updateButtonStates() A continuación, vuelve a implementar este ButtonUpdated() en tu subclase QWizard y desactiva el botón Atrás allí.

+0

puede tomar QWizard :: BackButton en cualquier momento con el botón 'QWizrad :: (WizardButton which) const' y ocultarlo/deshabilitarlo en cualquier momento –

+2

¿lo comprobó usted mismo? Lo revisé en 4.7.4 y no funcionó tan simple – Dmitriy

4

Calling

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

en

QWizard::onCurrentIdChanged(int) 

trabajado para mí (en PyQt4).

Esto oculta eficazmente el botón Atrás en cada página del asistente, pero logra el efecto deseado.

0

Una forma alternativa (quizás más orientada al entorno) sería establecer que QWizardPage, que aparece antes de la página en la que desea que se deshabilite el botón Atrás, sea una página de confirmación. Simplemente llame al this.setCommitPage(true) en un QWizardPage y la página siguiente no tendrá habilitado el botón Atrás.

de QWizardPage documentation

vacío QWizardPage :: setCommitPage (commitPage bool) Conjuntos esta página a ser una página de cometer si commitPage es cierto; de lo contrario, establece que sea una página normal . Una página de confirmación es una página que representa una acción que no se puede deshacer haciendo clic en Atrás o Cancelar. Un botón Confirmar reemplaza el botón Siguiente en una página de confirmación. Al hacer clic en este botón, simplemente llama al QWizard :: next() al igual que al hacer clic en Siguiente. Una página ingresada directamente desde una página de confirmación tiene su botón Atrás deshabilitado. Vea también isCommitPage().

Si desea deshabilitar todos los botones de retroceso, puede simplemente llamarlo en cada página.

Cuestiones relacionadas