¿Cómo puedo ir a un número de página específico en QWizard?
Qt 5
, QWizard
¡Hola! He revisado algunas respuestas sobre ese tema pero aún no puedo entenderlo del todo. Aquí está la idea que quiero hacer:
Quiero crear un grupo de botones para navegar entre las páginas de QWizard
.
Por ejemplo, en la parte superior de mi QWizard
tengo:
Al hacer clic en un botón, obtengo un id, que es el mismo que el id de las páginas, y quiero mostrar al usuario la página con ese id.
Intento llamar a:
this->page(pageId)->show();
¡Por supuesto, no es correcto! Veo addPage(), page() y pageAdded().
pero no tiene un método para establecerlo.
Por supuesto, puedo analizar mi id, obtener el número de página actual y llamar al método this->back();
o next
, pero tal vez haya un método más sencillo que no conozco?
void StartupWizard::OnPageNumMove(int pageIdToMove)
{
if(currentId()==pageIdToMove)
{
return;
}
else
{
if(currentId()<pageIdToMove)
{
while (pageIdToMove!=currentId())
{
this->next();
}
}
else
{
while (pageIdToMove!=currentId())
{
this->back();
}
}
}
}
davy.ai
Solución
Para crear un grupo de botones para navegar entre las páginas de un QWizard, puedes usar
QButtonGroup
y conectar su señalbuttonClicked()
a una ranura personalizada. En la ranura personalizada, puedes obtener el ID del botón que se ha pulsado y utilizarlo para mostrar la página de asistente correspondiente.Aquí tienes un ejemplo de cómo hacerlo:
En este código, primero creamos un
QButtonGroup
y añadimos algunos botones a él. Cada botón está asociado a un ID de página, que pasamos a la funciónaddButton()
.A continuación, conectamos la señal
buttonClicked()
delQButtonGroup
a una ranura personalizada llamadamostrarPaginaAsistente()
. Esta ranura recibe el ID del botón pulsado como argumento.Dentro de la ranura
mostrarPaginaAsistente()
, primero comprobamos si el ID de la página es válido (es decir, no es negativo y no es mayor que el número total de páginas). Si el ID no es válido, salimos de la función sin hacer nada.Después, comprobamos si el botón pulsado corresponde a la página actual del asistente. Si es así, salimos de la función sin hacer nada.
Si el botón pulsado corresponde a una página que está después de la página actual, llamamos a la función
siguiente()
repetidamente hasta llegar a la página deseada. Si el botón pulsado corresponde a una página que está antes de la página actual, llamamos a la funciónanterior()
repetidamente hasta llegar a la página deseada.De esta manera, cuando el usuario pulsa uno de los botones del grupo de botones, se muestra la página de asistente con el ID correspondiente.