Rav*_*sha 5 qt qt4 qt-creator code-snippets
我正在尝试创建一个代码片段,它将打印一些带有当前文件名和当前方法/标签名称的控制台日志,就像我们在systrEclipse 中的方式一样。
虽然我可以在Tools > Options > Text editor > Snippet中添加代码片段,但我找不到任何标签来检索当前文件名。
示例文件(TestMyUI.js):
function doSomething{
console.log("TestMyUI.doSomething()");
}
Run Code Online (Sandbox Code Playgroud)
在这里,我喜欢console.log使用保存在片段中的模板来生成。因此,对于我输入类似内容的每个地方,consLog都必须自动完成填充当前文件和方法名称的日志。这与我们在 eclipse IDE 中的类似systr。
如果您想获取 QML 文件的信息并将其集成到输出中,您可以使用
qInstallMessageHandler(QtMessageHandler handler)
安装您自己的消息处理函数。在该函数内,您将有一个QMessageLogContext引用,它可以让您访问更多信息,例如文件名、行号、函数名称等。
void msgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) {
static QTextStream ts(stdout);
static const char * err[] = {"", "WARNING: ", "ERROR!: ", "FATAL: ", ""};
QString m = QString(err[type]) + context.category + "/" + context.file + "@" + QString::number(context.line) + "-" + context.function + ": " + msg;
ts << msg << endl;
}
Run Code Online (Sandbox Code Playgroud)
现在,您可能不希望以这种方式处理所有消息,并将其限制为某种特定模式,这可以通过在消息字符串中合并特定“标头”并检查特定消息是否包含该标头来轻松实现,并且相应地进行。例如:
console.log("test") // regular msg
console.log("?test") // custom msg handling
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用标头数组来指定自定义处理、将日志保存到不同的文件、以自定义格式发送网络消息或电子邮件等。一旦使用自定义处理程序,您就可以对消息执行任何您想要的操作。
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |