如何启用和禁用qDebug()消息。

23

我通过编写以下代码来禁用qDebug()消息:

CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT

在 .pro 文件中,这很有效。我想知道是否有任何方法可以使用源代码启用 qDebug() 消息。我想将其作为参数发送到应用程序中。因此,默认情况下,我将禁用 qDebug() 消息,但是通过指定一个参数来切换打开 qDebug() 消息,我需要启用 qDebug()。这可能吗?

感谢任何帮助。


2
您可以查看 qInstallMsgHandler 的文档。 - vahancho
@vahancho,.pro文件中的那行对我来说无法停止console.log。 - mohammad alabid
1
@mohammadalabid,为什么你要将它添加到.pro文件中?它应该被添加到你的源代码中。请参考这个问题的答案和Qt文档:http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler。 - vahancho
我指的是这一行 CONFIG(release,debug | release):DEFINES + = QT_NO_DEBUG_OUTPUT - mohammad alabid
3个回答

16

您可以通过一些选项在运行时控制QDebug(以及所有消息):

  1. QLoggingCategory 允许您使用环境变量或配置文件。例如,在Qt 5.6中,您可以执行:QT_LOGGING_RULES =“*.debug = false; driver.usb.debug = true” 除了USB调试之外,还打开了QDebug的所有内容。如果您需要更复杂的设置或者使用Qt 5.5或更早版本,则可以通过qtlogging.ini文件逐个打开和关闭单个调试消息。
  2. QT_MESSAGE_PATTERN 也可以用于控制消息输出以及进行格式化

11
你可以使用qInstallMsgHandler来添加自己的函数以处理Qt的调试信息。
这将使你能够控制是否打印这些消息。

1
将以下代码添加到我的qmake项目文件中,即可在Windows/MSYS上启用发布版本的qDebug()消息,即使没有qInstallMsgHandler():
CONFIG += console
CONFIG += warn_on

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接