From my last post, I create a program how to use QProcess in our program. Now, I try to write a method how Qt : QProcess in a loop method. This problem show when I try to use QProcess in a loop. I have list of command line program (running from bash or konsole) and I want to running that all list command from Qt.
We can solve Qt : QProcess in loop problem with use void QProcess::finished ( int exitCode, QProcess::ExitStatus exitStatus ) [signal]. This signal is emitted when the process finishes. exitCode is the exit code of the process, and exitStatus is the exit status. After the process has finished. You can read the complete description from this function at Qt Documentation. This is my screenshot of simple program Qt : QProcess in a loop :
This is description from Qt : QProcess in a loop program above. From the left listbox, I have some of extension of file (*.so, *.a, etc). From this program, I use find command(linux find command) at location “/usr” with parameter :
find /usr -name extension_from_list_1_to_end -print
Output text from this program will show in textEdit (widget at right location). This is my void QProcess::finished function to solve Qt : QProcess in a loop problem :
//this function will executed at the end of every process
void Qt_Loop_QProcess::finishedProcess ( int exitCode, QProcess::ExitStatus exitStatus )
ui.textReport->append("complete"); //finishid process command
if(idxProcess<nExtension) //run qprocess again until all extension finished
/* create QProcess object */
proc= new QProcess();
QString strCommand = setCommand(listExtension.at(idxProcess));
proc->start("/bin/bash", QStringList() << "-c" << strCommand);
/* show output */
connect(proc, SIGNAL(readyReadStandardOutput()),this, SLOT(rightMessage()) );
connect(proc, SIGNAL(readyReadStandardError()), this, SLOT(wrongMessage()) );
connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(finishedProcess(int, QProcess::ExitStatus)) );
This Qt : QProcess in a loop program will process every extension at left location until all extension processed. You can get information processes that are running from selected item at listwidget (left widget position). This is a output from Qt : QProcess in a loop program when we press QProcess Loop button :
You can download the complete Qt : QProcess in a loop source code at here.
My name is Toto Sugito. This is my notes when I try something. Maybe, this is NOT THE BEST SOLUTION for your problems. If you have other method or idea that better with my post, please share in this blog. Thank for visiting my site.