Я новичок в qt. Было бы очень полезно, если бы эта проблема была решена. Я хотел бы использовать QProcess для выполнения файла и показать вывод в реальном времени в QTextviewer. Файл не может прекратить работу, пока вы не нажмете ctrl c в командной строке терминала. В противном случае файл хорошо работает на терминале в Linux. Основная проблема заключалась в следующем: процесс запустился с помощью qt, однако я не увидел никакого результата.
Я пробую сигнал (readyReadStandardOutput) и слот. Когда я добавляю waitforfinished(), графический интерфейс зависает.
if(!process)
{
process = new QProcess (this);
}
process -> setWorkingDirectory("mydir");
connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(logRead()));
connect(process, SIGNAL(readyReadStandardError()), this, SLOT(readError()));
process -> start("./file");
process -> setProcessChannelMode(QProcess::MergedChannels);
if(false == peocess-> waitForStarted())
{
ui -> textBrowser->append("the process cannot be called");
}else{
ui -> textBrowser->append("the process can be called");
}
textBrowser показал, что «процесс можно вызвать».
void Dialog::logRead()
{
QProcess *process = dynamic_cast<QProcess *>( sender() );
if (process){
ui->textBrowser->append( p->readAllStandardOutput() );
}
Я не знаю, почему я НЕ МОГУ выводить текст в режиме реального времени, даже я не получил никакого вывода! Любое предложение? Спасибо!
QProcess::setProcessChannelMode
:"This mode will be used the next time start() is called"
. Поэтому вызовsetProcessChannelMode
послеstart
, вероятно, не даст желаемого эффекта. - person G.M.   schedule 15.08.2019