"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso redirecionar QDebug, qwarning e saída Qcritical no QT?

Como posso redirecionar QDebug, qwarning e saída Qcritical no QT?

Postado em 2025-03-07
Navegar:450

How can I redirect QDebug, QWarning, and QCritical output in Qt?

redirecionando qdebug, qwarning e qcritical Output

em qt, as informações de depuração são frequentemente impressas no console usando qdebug () e outras declarações semelhantes. Pode ser útil redirecionar essa saída para um arquivo, especialmente para o desenvolvimento de plataformas cruzadas. Isso evita o uso de scripts do shell e fornece uma solução mais consistente.

Handler de mensagens personalizado

para redirecionar a saída de depuração, o QT fornece a função QinstalmessageHandler (). Isso permite que você instale um manipulador de mensagens personalizado que processe as mensagens antes de serem impressas. Aqui está um exemplo manipulador:

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    switch (type) {
    case QtDebugMsg:
        fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtInfoMsg:
        // ...
    case QtWarningMsg:
        // ...
    case QtCriticalMsg:
        // ...
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        abort();
    }
}

Este manipulador gera as mensagens para Stderr, mas você pode substituir o Stderr por um fluxo de arquivo para redirecionar a saída. função:

qinstallMessageHandler (myMessageOutput);

Depois de instalado, todas as mensagens Qdebug e similares serão redirecionadas para o manipulador e escritas no arquivo ou stream que você especificou.
            
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3