我们正在调整应用程序的最终版本,并且我们在c ++中成功禁用了调试消息。
CONFIG(release, debug|release):{
message(Building in release mode. We deactivate the logs.)
DEFINES += QT_NO_DEBUG_OUTPUT
} else {
message(Building in debug mode.)
}
但是,我们的QML javascript console.log()函数仍在记录信息。
我还发现this source明确指出: 使用C ++中的qDebug,qWarning,qCritical方法生成输出(另请参阅调试技术)。
对我来说什么都没有多大意义,因为我已经忽略了所有的qDebugs()
所以,问题是: 如何忽略所有console.log()?
我认为这应该是一项简单的任务,类似于qDebug()消息。
如需了解更多信息,请发表评论。
注意:我知道该链接适用于Qt 5.,但我使用的是Qt 4.8。
提前致谢!
答案 0 :(得分:1)
如果$(function () {
var template =
"<h3>Details</h3>" +
"<ul>" +
"<li>Submitted: <span class='submittedTime'></span></li>" +
"<li>Submitted by: <span class='submitter'></span></li>" +
"<li>Contact Information" +
"<ul>" +
"<li>Name: <span class='contactName'></span></li>" +
"<li>Name: <span class='contactEmail'></span></li>" +
"</ul>" +
"</li>" +
"</ul>";
var t = $(template);
//console.log(t);
$(t).appendTo(".test");
});
成功禁用Qt代码中的输出,则应对实现QT_NO_DEBUG_OUTPUT
的{{3}}执行相同操作。但是,我认为这些功能宏是故意不经过自动测试的(太多的宏,太少的硬件资源无法测试它们),因此任何错误报告都会被关闭,并且您可能会被鼓励自己提交补丁
另一种解决方案可能是使用C++ functions,如qInstallMessageHandler()
问题的答案所述。
不幸的是,这对您没有帮助,但在第5版中,它足以使用this环境变量禁用logging rule:
console.log()
答案 1 :(得分:0)
这是我用于最终版本的内容:
qputenv("QT_LOGGING_RULES", QByteArray("*.debug=false;qml=false"));