2016-10-04 2 views
0

Я использую программу QT, чтобы запустить некоторый фоновый процесс в Ubuntu.Как показать результат процесса в QT?

Я знаю, как отображать детали результата Qprocess после завершения процесса. (Использование QbyteArray).

Есть ли способ для меня, чтобы показать прогресс QProcess в то время как процесс работает в фоновом режиме. (Т.е. в окне сообщения или любой другой подобной информационной подокне.)

+0

'QProcess' предоставляет асинхронные сигналы о состоянии процесса. Вы также можете прочитать его вывод. –

+0

Можете ли вы поделиться каким-либо примером кода для этого? –

+0

Это все в документах! http://doc.qt.io/qt-5/qprocess.html –

ответ

1

Вы можете прочитать результат процесса асинхронно. Для этого вы должны подключить QProcess::readyReadStandardOutput() или QProcess::readyReadStandardError() к вашему слоту.

QString program = "ping"; 
QStringList arguments; 
arguments << "google.com"; 
myProcess = new QProcess(parent); 
connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readyR())); 
myProcess->start(program, arguments); 

В вашем слоте вы можете считывать данные из стандартного вывода с помощью процесса и делать то, что хотите.

void YourClass::readyR() 
{ 
    qDebug()<<myProcess->readAllStandardOutput(); 
}