gpt4 book ai didi

c++ - 消息处理器 Qt

转载 作者:行者123 更新时间:2023-11-28 06:50:40 25 4
gpt4 key购买 nike

我想创建一个额外的QtMsgType。所以我写了一个处理所有默认类型的消息处理程序。 qDebug() 用于QtDebugMsgqWarning() 用于QtWarningMsg

在Qt源码中:

enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg };

我使用 qInstallMsgHandler 注册的消息处理程序:

void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& msg) {
switch (type){
case QtDebugMsg: OutputMessageHandler::getHandler()->debug(msg); break;
case QtWarningMsg: OutputMessageHandler::getHandler()->warning(msg); break;
case QtCriticalMsg: OutputMessageHandler::getHandler()->error(msg); break;
case QtFatalMsg: OutputMessageHandler::getHandler()->fatal(msg); break;
}
}

我想要一个带有 MyCustomMsgqMyCustomMessage() 以便我的处理程序像捕获 qDebug() 一样捕获它,但是我不知道我该怎么做。有什么办法可以实现吗?提前致谢。

最佳答案

我怀疑您能否定义 QtMsgType 枚举中未列出的自定义消息。但是,您可以通过以特殊方式添加前缀来区分消息。例如,在您的消息处理程序中,您可以这样写:

void messageHandler(QtMsgType type, const char *msg)
{
switch (type) {
case QtDebugMsg:
QString strMessage(msg);
if (strMessage.startsWith("MyCustomMessage") {
// Handle my messages here.
}
break;
default:
break;
}
}

在您的代码中,您可以像这样发送消息:

qDebug() << "MyCustomMessage" << "This is a special message I send";

关于c++ - 消息处理器 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com