首页 > 解决方案 > 如何在代码片段中获取当前文件名

问题描述

我正在尝试创建一个代码片段,它将打印一些带有当前文件名和当前方法/标签名称的控制台日志,就像我们systr在 Eclipse 中的方式一样。

虽然我可以在Tools > Options > Text editor > Snippet添加代码片段,但我找不到任何标签来检索当前文件名。

示例文件(TestMyUI.js):

function doSomething{
console.log("TestMyUI.doSomething()");
}

在这里,我喜欢console.log使用保存在片段中的模板来生成。因此,对于我输入类似内容的每个地方,都consLog必须自动完成填充当前文件和方法名称的日志。这与我们systr在 eclipse IDE 中的类似。

标签: qtqt4qt-creatorcode-snippets

解决方案


添加到@dtech的答案:

报告文件、行和函数已经是登录 Qt 不可或缺的一部分。您所要做的就是正确使用它。不需要代码片段来执行此操作,因为所有这些信息已经被收集console.log但默认情况下不显示。你现在要做的就是告诉 Qt 让它可见。

一种比创建自定义消息处理程序更简单的方法是简单地注册一个消息模式(请参阅 参考资料qSetMessagePattern)。有了这个,您可以注册一个模式,该模式应该用于格式化通过 QDebug(包括 QML)记录的任何内容。一个简单的例子:

int main(int argc, char **argv) {
    qSetMessagePattern("%{file}:%{line} %{function} -> %{if-category}%{category}: %{endif}%{message}");

    QGuiApplication app(argc, argv);
    // ...
}

现在在您的 QML 文件中简单地记录任何内容,一切顺利。例如,下面的代码:

function doSomething() {
    console.log("test");
}

将输出此示例(使用实际测试文件创建):

qrc:/TestMyUI.js:11 doSomething -> qml: test

推荐阅读