Как перенаправить вывод текста в командную строку в Qt? - PullRequest
0 голосов
/ 07 января 2019

Если у меня есть QApplication, как я могу перенаправить вывод (из qDebug) в консоль командной строки, которая впервые запустила исполняемый файл?

Обратите внимание, что я не хочу создавать новую консоль.

1 Ответ

0 голосов
/ 08 января 2019

Вы можете использовать qInstallMessageHandler для перенаправления qDebug() на вашу собственную функцию.

void qDebugRedirect(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    switch (type) {
    case QtDebugMsg:
        std::cout << msg.toStdString() << " from line: " << context.line;
        break;

    default:
        break;
    }
}

Вы хотите установить обработчик сообщений как можно раньше:

int main(int argc, char *argv[])
{
    qInstallMessageHandler(qDebugRedirect); // Install the handler
    QCoreApplication a(argc, argv);

    qDebug() << "Hello from qDebug";
    return a.exec();
}
...