[Kde-devel-es] Problemilla con QWizard

Francisco Gimeno francisco.gimeno at telvent-rtd.com
Wed Feb 18 14:11:32 CET 2004


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...

Como el proceso dura mucho tiempo, no se responde a ningun mensaje y parece 
colgao.

> Francisco,
>
> lo primero muchas gracias por tu atención.
>
> Con hilos debería funcionar perfectamente, pero no es lo que quiero en este
> caso (por razones que no vienen al caso). Sigo sin entender por que ejecuta
> antes instalacion->Instalar() que QWizard::showPage(page) cuando el orden
> dentro del método es el contrario.
>
> Un saludo,
>
> Pedro Echanove
>
> El Miércoles, 18 de Febrero de 2004 12:59, Francisco Gimeno escribió:
> > Hola:
> >
> > Para lo que quieres hacer, creo que es necesario el uso de hilos. Si bien
> > al principio puede parecer una locura, Qt proporciona una forma muy
> > sencilla de hacerlo.
> >
> > Solo tienes que crear una clase que herede de QTthread y sobrecargar el
> > metodo run, para usarlo, execute();
> >
> > El siguiente problema que se te planteara es la comunicacion del proceso
> > que esta haciendo cosas con la interfaz grafica. Debes usar mutex cada
> > vez que cambies algo de otro hilo.
> >
> > En fin, suerte, y mirate los ejemplos de Qthread
> >
> > ---
> >
> > > Hola a todos
> > >
> > > Me llamo Pedro y en mi empresa estamos desarrollando una distribucion
> > > de Linux basada en Woody con kde 3.2 y orientada al usuario de Windows.
> > > En cuanto la acabemos (si Dios quiere este mes) os daré la URL por si
> > > alguien quiere bajarse las ISOs. Está quedando muy bien y es muy
> > > estable
> > >
> > > :)
> > >
> > > En el instalador tengo un problemilla con QWizard. Os paso el trozo del
> > > código en el que está el problema, a ver si alguien me puede ayudar.
> > >
> > > void MainWindow::showPage( QWidget* page )
> > > {
> > > 	QWizard::showPage(page);
> > >
> > >         if (page == page4 )
> > >         {
> > >                 instalacion->Instalar();
> > > 	}
> > > }
> > >
> > > void Instalacion::Instalar()
> > > {
> > >         int i = 1;
> > >         QStringList::iterator it;
> > >         for ( it = packagesList.begin(); it != packagesList.end(); ++it
> > > ) {
> > >                 etiqueta->setText("Instalando " + (*it));
> > > 		/* Aquí ejecuta apt-get install (*it) */
> > >                 barra->setProgress(i);
> > >                 i++;
> > >         }
> > >         etiqueta->setText("La instalaci\xf3n ha terminado. Pulse
> > > 'Siguiente' para continuar");
> > > }
> > >
> > > NOTA: MainWindow hereda directamente de QWizard.
> > >
> > > El metodo instalacion->Instalar() ejecuta una serie de acciones como
> > > por ejemplo mostrar el progreso de la instalacion con una QProgressBar.
> > > Pero la pagina "page4" del QWizard no se muestra hasta que ha terminado
> > > instalacion->Instalar(). ¿Por qué ocurre esto, si la llamada al metodo
> > > Preparar es posterior al QWizard::showPage(page4)? He probado a hacer
> > > update() y repaint() antes de Instalar(), pero nada.
> > >
> > > Gracias por adelantado y saludos a todos.
> > >
> > > Pedro Echanove
> > > _______________________________________________
> > > Kde-devel-es mailing list
> > > Kde-devel-es at kde.org
> > > https://mail.kde.org/mailman/listinfo/kde-devel-es
> >
> > _______________________________________________
> > Kde-devel-es mailing list
> > Kde-devel-es at kde.org
> > https://mail.kde.org/mailman/listinfo/kde-devel-es


More information about the Kde-devel-es mailing list