QT - Bucle de datos con QProcess

 
Vista:

Bucle de datos con QProcess

Publicado por kapyderi (1 intervención) el 23/11/2010 13:12:04
Buenas.

Me presento, soy kapyderi del foro de Mandriva Linux www.blogdrake.net y estoy realizando una utilidad en QT y C++, que anteriormente la tenia hecha en Zenity y Bash, pero me he adentrado en este mundo y necesito saber un pequeño detalle, que no soy capaz de resolver.

Necesito saber como podria implementar este bucle en un system() o QProcess, ya que he buscado ejemplos y no se las posiblidades de dichas funciones, exactamente.

Ejemplo:

Un fichero con los siguientes datos:

1.rpm 2.rpm 3.rpm

Ejemplo con system():

void recoverdrake::on_actionRecuperar_paquetes_huerfanos_Eliminados_triggered()
{
int respuesta = 0;

respuesta = QMessageBox::question(this, tr("Recuperar paquetes huerfanos"),
tr("<center><b>Recuperar paquetes huerfanos<b></center><p>"

"Mediante esta opcion podemos recupera los paquetes "
"huerfanos eliminados, ya que los volvera a instalar.<p>"

"Es importante en el caso de inestabilidad del sistema.<p>"

"<b>Este proceso se realizara en la consola principal.</b><p>"

"<B>NOTA: Debe esperar a que termine completamente el "
"proceso seleccionado, el cual le sera notificado "
"cuando finalice.</B>"), QMessageBox::Ok, QMessageBox::No);

if (respuesta == QMessageBox::Ok){
QString path="/home/%1/Documentos/BackOrphans.lst";
path=path.arg(user);

QString fileName = QFileDialog::getOpenFileName(this,tr("Abrir fichero"),
path,tr("Fichero de listado (.lst)"));
if (!fileName.isEmpty())
return;

QString cmd = "bin/sh for Recuperar in `cat %2`; do urpmi -a --auto $Recuperar; done";
cmd = cmd.arg(fileName);
system(cmd.toAscii().data());}
return;
}

Ejemplo con QProcess() [No tengo ni idea de como implementarlo]:

void recoverdrake::on_actionRecuperar_paquetes_huerfanos_Eliminados_triggered()
{
int respuesta = 0;

respuesta = QMessageBox::question(this, tr("Recuperar paquetes huerfanos"),
tr("<center><b>Recuperar paquetes huerfanos<b></center><p>"

"Mediante esta opcion podemos recupera los paquetes "
"huerfanos eliminados, ya que los volvera a instalar.<p>"

"Es importante en el caso de inestabilidad del sistema.<p>"

"<b>Este proceso se realizara en la consola principal.</b><p>"

"<B>NOTA: Debe esperar a que termine completamente el "
"proceso seleccionado, el cual le sera notificado "
"cuando finalice.</B>"), QMessageBox::Ok, QMessageBox::No);

if (respuesta == QMessageBox::Ok){
QString path="/home/%1/Documentos/BackOrphans.lst";
path=path.arg(user);

QString fileName = QFileDialog::getOpenFileName(this,tr("Abrir fichero"),
path,tr("Fichero de listado (.lst)"));
if (!fileName.isEmpty())
return;

QString cmd = "bin/sh for Recuperar in `cat %2`; do urpmi -a --auto $Recuperar; done";
QStringList comandos;
comandos<< cmd;

if (mib != 0)
delete mib;
mib = new DrakeProcesos(comandos, this);
connect(mib, SIGNAL(publicarDatos(QString)), this, SLOT(mibEscribir(QString)));
connect(mib, SIGNAL(finProceso()), this, SLOT(mibFin()));
mib->iniciarProceso();}
return;
}

y no hace nada, cuando deberia de descagar los tres paquetes anteriores en la consola de Linux.

¿Por que no hace nada y como deberia de ser aplicado?

Gracias por vuestra paciencia y ayuda.

PD.: Si necesitais que os pase cualquier .cpp .h o lo que necesiteis para saber partes de las funciones, no dudar en comentarmelo.

Saludos!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder