[Kde-devel-es] Problemilla con QWizard

Antonio Larrosa Jiménez larrosa at kde.org
Wed Feb 18 21:47:31 CET 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El Miércoles 18 Febrero 2004 14:11, Francisco Gimeno escribió:
> On Wednesday 18 February 2004 13:54, Pedro María de Echanove Pasquín
> wrote:
>
> Pues mira, lo que creo que pasa es...
> que no se llega al bucle de mensajes para que vaya distribuyendo las
> ordenes de pintar y tal...
>

Sí, eso es lo que pasa.

Lo que yo haría es dividir el bucle de forma que se ejecute un paso cada vez.
Pon el iterador QStringList::iterator it; como variable del objeto 
(cambiándole el nombre, claro).
En vez de llamar a instalación->Instalar(), en showPage() haz algo como:

if (page == page4)
{
    it=packagesList.begin();
    instalaSiguiente();
}

Y haces un slot llamado instalaSiguiente que sea:

void Instalacion::instalaSiguiente()
{
 if (it==packagesList.end())
  {
    etiqueta->setText("La instalaci\xf3n ha terminado. Pulse 'Siguiente' para 
continuar");
    return;
  }
 etiqueta->setText("Instalando " + (*it));
 /* Aquí ejecuta apt-get install (*it) */
/* Usa QProcess para ejecutar apt-get, y haz: */
connect(m_proc, SIGNAL(finished()), this, SLOT(instalaSiguiente());
++it;
 }

Así, el programa se ejecuta de fondo (al fin y al cabo, apt-get se ejecutará 
en otro proceso) y el sistema te avisará cuando se acabe para que ejecutes 
el siguiente apt-get hasta que se terminen todos.

Realmente son muy MUY pocos los casos en los que hay que usar processEvents. 
Y los threads también son poco necesarios en la mayoría de los casos.

Saludos,

- --
Antonio Larrosa Jimenez
KDE developer - larrosa at kde.org
http://developer.kde.org/~larrosa/
They that can give up essential liberty to obtain a little temporary safety 
deserve neither liberty nor safety -- B.Franklin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQFAM89v3mWkZZAItZARAqPqAKCVx7gqsQM9zILoG4jFqjvZYuH5ogCgwbEt
PFg+svSTdAern4hu+P9Fe0g=
=xvI6
-----END PGP SIGNATURE-----


More information about the Kde-devel-es mailing list