Как решить, какой тип сообщения QtMsgType печатать

Есть ли способ сообщить приложению только о печати qDebug или только qFatal Сообщения?

1

Решение

Да, есть. Вы можете установить свой собственный обработчик сообщений с qInstallMessageHandler,
Это выглядит примерно так (из документации Qt):

    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 QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
abort();
}
}

int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}

Дает вам 100% контроль над тем, как qDebug и другие q ** выходные функции работают.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]