[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