4 Star 20 Fork 21

graycatya / Qml_CustomControl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README.md 2.70 KB
一键复制 编辑 原始数据 按行查看 历史
Your Name 提交于 2020-02-17 23:06 . 添加日志模块文档

返回

Qml&C++轻量级日志模块

  • 模块提供C++实现的Qml轻量级日志模块

  • 自行编译需要C++11的支持

目录结构

.
├── CMakeLists.txt
├── Demo.qml
├── Log
│   ├── CatLog_Message.hpp
│   ├── CatLog_Sington.cpp
│   ├── CatLog_Sington.h
│   └── CMakeLists.txt
├── main.cpp
├── main.qml
├── QmlCatLog
│   ├── CMakeLists.txt
│   ├── QmlCatLog.cpp
│   └── QmlCatLog.h
└── README.md

模块划分

Log目录是C++实现的日志模块

  • 单例模式+多生产者-单消费者模型

  • 支持线程安全

  • 内部提供打印模块实现(该模块支持在Qt中使用)

  • 内部提供写文件模块该模块可将日志写入文件(支持线程安全,多文件写日志)

  • 日志模块内部提供Log数据头实现(获取时间,文件路径,函数名,触发日志所在行)

├── Log
│   ├── CatLog_Message.hpp
│   ├── CatLog_Sington.cpp
│   ├── CatLog_Sington.h
│   └── CMakeLists.txt

QmlCatLog目录提供的是C++实现的Qml日志中间件有了它Qml才能调用Log目录下的实现

  • 单例模式

  • 支持线程安全

  • 内部提供写文件模块该模块可将日志写入文件(支持线程安全,多文件写日志)

  • 日志模块内部提供Log数据头实现(获取时间,文件路径,函数名,触发日志所在行)

  • 模块可扩展成网络日志

├── QmlCatLog
│   ├── CMakeLists.txt
│   ├── QmlCatLog.cpp
│   └── QmlCatLog.h

Example

main.cpp

    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QMLCATLOG::CatLog *CatLog = QMLCATLOG::CatLog::Instance();

    QQmlApplicationEngine engine;
    //需要将模块注册到qml中,改模块就能在qml所有子控件中使用
    engine.rootContext()->setContextProperty("catlog", CatLog);
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();

main.qml

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Demo {}
    Component.onCompleted: {
        console.debug("************************");
        var i = 0;
        for(i = 0; i < 100; i++)
            //调用方式需要与定义时的名字一样
            catlog.debug_print("QMLLOG: " + i);
    }
}
QML
1
https://gitee.com/graycatya/Qml_CustomControl.git
git@gitee.com:graycatya/Qml_CustomControl.git
graycatya
Qml_CustomControl
Qml_CustomControl
master

搜索帮助