我试图将QProcess的输出重定向到我的控制台。 以下是我使用的代码:
QProcess *process = new QProcess(this);
connect (process, SIGNAL(readyReadStandardOutput()), this, SLOT(processOutput()));
connect (process, SIGNAL(readyReadStandardError()), this, SLOT(processOutput()));
process->start(program);
void MainWindow::processOutput()
{
qDebug() << process->readAllStandardOutput();
}
但是上面没有将输出流重定向到我的控制台。每次程序尝试打印时都会调用processOutput()函数,但所有输出似乎都由QProcess缓冲,并且只有在QProcess启动程序完成后才会打印在我的控制台上。任何帮助将不胜感激。谢谢!
我有一个MessageHandler类,它将所有qDebug消息重定向到我的GUI App中的Console TabOutput。
MessageHandler::handleMessages(QtMsgType type, const QMessageLogContext &cntxt, const QString &msg)
{
switch(type)
{
case QtDebugMsg:
if(!m_appOutput)
{
fprintf(stderr, "Debug :: %s\n", qPrintable(msg));
}
else
{
m_appOutput->append(msg);
}
break;
}
}
在我的main.cpp中,我已经注册了我的消息处理程序类,如下所示:
qInstallMessageHandler(MessageHandler::handleMessages);
m_appOutput是一个QTextEdit,它出现在MainWindow中,我的所有应用程序输出消息都会打印出来。