QProcess实时输出重定向

时间:2015-02-23 09:21:37

标签: qt qt-creator qprocess

我试图将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中,我的所有应用程序输出消息都会打印出来。

0 个答案:

没有答案