为console.log设置一个QML类别
Set a QML category for console.log
我是Qt/QML主题的新手,我正试图在我的c++业务逻辑中安装日志处理程序。下面的代码片段安装了一个处理程序并设置了一个特殊的类别:
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);
QLoggingCategory mainEx("main.ex");
qCDebug(mainEx) << "debug message";
...
}
结果是从Qt后端调用下面安装的消息处理程序:
void myMessageOutput(QtMsgType type, const QMessageLogContext &context,
const QString &msg)
{
...
}
在Qt 5中,也可以直接在QML中编写调试消息:
console.debug("debug message")
但是在qmessagelogcontext中的' category '总是'qml'。是否可以在QML中直接设置另一个类别?
从Qt 5.8开始,在QML中可以开箱使用分类日志。
日志类别可以传递给console.log()和朋友第一个参数。如果提供给记录器LoggingCategory'sname将用作日志记录类别,否则为默认日志记录目录将被使用。
import QtQuick 2.8
Item {
LoggingCategory {
id: category
name: "com.qt.category"
}
Component.onCompleted: {
console.log(category, "message");
}
}
我认为没有现成的解决方案可以覆盖QML引擎中的默认类别。下面是可能的解决方案,有很好的解释和代码。
相关文章:
- 最佳做法是从另一个线程访问 qml 中的Q_PROPERTY
- QT QML - 从另一个类访问 qml 模型
- 如何从另一个QML文件更改标签文本
- OpenCV + QML(从另一个线程抓取帧)
- 如何从 QT 中的.cpp访问 QML 中的一个复选框
- QT QML - 在 C++ 的现有应用程序窗口中显示一个矩形
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 包含 QML 文件中的另一个 QML 文件
- 将QT QML应用程序部署到Windows上显示了一个空白窗口
- Qt/QML:如何在不重新启动应用程序的情况下"switch to"或"open"另一个 QML 文件?
- 如何从另一个线程的 cpp 代码同步调用 qml 信号处理程序
- 将 QML 文件内容替换为另一个文件内容
- 如何使用Blackberry 10中的Cascades中的Qt/qml/C++将一个qml文件中的标签文本从另一个qml
- 一个动态C++模型和一个QML ListView
- QML如何对属性的每次更改进行动画处理?(只有最后一个更改动画可见)
- 创建一个QML插件来运行系统命令
- 为console.log设置一个QML类别
- 在Qml中创建一个新文件夹
- 在QML插件中注册一个C++抽象类,并从QML中引用它
- 级联导航窗格:连接到另一个qml文件的对象信号