查看完整版本: [-- zhengtianzuo系列-Qml写日志 --]

QTCN开发网 -> Qt代码秀 -> zhengtianzuo系列-Qml写日志 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zhengtianzuo 2017-10-16 14:25

zhengtianzuo系列-Qml写日志

大家都知道通过Q_INVOKABLE可以让qml直接访问c++类的接口函数.

```
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    static QMutex mutex;
    mutex.lock();

    QString text;
    switch(type)
    {
    case QtDebugMsg:
        text = QString("Debug:");
        break;

    case QtWarningMsg:
        text = QString("Warning:");
        break;

    case QtCriticalMsg:
        text = QString("Critical:");
        break;

    case QtFatalMsg:
        text = QString("Fatal:");
    }

    QString message = "";
    if (context.file != nullptr)
    {
        QString context_info = QString("File:(%1) Line:(%2)").arg(QString(context.file)).arg(context.line);
        QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
        QString current_date = QString("(%1)").arg(current_date_time);
        message = QString("%1 %2 %3 %4").arg(text).arg(context_info).arg(msg).arg(current_date);
    }
    else
    {
        message = msg;
    }

    QFile file("log.txt");
    file.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream text_stream(&file);
    text_stream << message << "\r\n";
    file.flush();
    file.close();

    mutex.unlock();
}

QmlLog4Qml::QmlLog4Qml()
{
    qInstallMessageHandler(outputMessage);
}

void QmlLog4Qml::qDebug_Info(int type, QString strInfo)
{
    QMessageLogContext context;
    context.file = nullptr;
    outputMessage((QtMsgType)type, context, strInfo);
}
```



需要完整代码请访问 QtQuickExamples

ccazqyy 2017-10-17 09:27
          

rpaul518 2017-10-30 21:37
qml系列啊,老铁,牛!!!

zhengtianzuo 2017-10-31 09:02
rpaul518:qml系列啊,老铁,牛!!![表情] [表情] [表情]  (2017-10-30 21:37) 

一起学习~


查看完整版本: [-- zhengtianzuo系列-Qml写日志 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled