我们正在构建一个使用qDebug
及其变体(qWarning,QCritical等)和自定义qDebug
消息处理程序的静态库。因此,每个qDebug
及其变体及其变体都重定向到我们的消息处理程序。但是我们不想在消息处理程序中处理应用程序的qDebug
及其变体。解决方法之一是在静态库中使用的QDebug
中传递自定义调试消息类型,并在qMessageHandler
回调中进行检查。但这安全吗?我们想到的另一种方法是创建一个类似于QDebug
的类,并像<<
一样为每种数据类型重载流插入QDebug
运算符。在Qt 5.2+中,我们有日志记录类别,可以轻松实现此目的。但不幸的是,我们必须在项目中使用qt 4.7。谁能告诉我是否有更简单的方法来实现这一目标?预先感谢。
答案 0 :(得分:0)
由于调用qInstallMessageHandler返回了对原始消息处理程序的引用,因此假设您使用的是Qt5,则可以处理所有消息类型,但类型QtDebugMsg
的消息类型除外,您将在其中调用先前的处理程序。 / p>