fromUnicode(msg)...-QT开发中文网" />

QT开发中文网

qt 代码不能把消息写入文件:void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { // 确定保存到文件中的文本编码方式为UTF-8 QTextCodec* codec = QTextCodec::codecForName("UTF-8"); QByteArray localMsg = codec->fromUnicode(msg)...

根据你提供的代码,我注意到了一个错误。在文件写入部分,你创建了一个名为fileWriteQFile对象,但在使用QTextStream进行输出时,却使用了名为file的对象来构造。

以下是修改后的代码,已修正这个问题:

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    // 确定保存到文件中的文本编码方式为UTF-8
    QTextCodec* codec = QTextCodec::codecForName("UTF-8");

    QByteArray localMsg = codec->fromUnicode(msg);
    const char *file = context.file ? context.file : "";
    const char *function = context.function ? context.function : "";

    QString TypeMsg = "";
    switch (type) {
        case QtDebugMsg:
            TypeMsg = QString("Debug");
            break;
        case QtInfoMsg:
            TypeMsg = QString("Info");
            break;
        case QtWarningMsg:
            TypeMsg = QString("Warning");
            break;
        case QtCriticalMsg:
            TypeMsg = QString("Critical");
            break;
        case QtFatalMsg:
            TypeMsg = QString("Fatal");
            break;
    }

    QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh-mm-ss:");
    
    // 将时间转换为UTF-8编码的字节数组,然后再转回QString
    time = codec->toUnicode(time.toUtf8());
    
    QString OutMsg = time + QString("%1 (%2:%3, %4) ").arg(TypeMsg).arg(file).arg(context.line).arg(function) + msg + "\n";

    QFile fileWrite("log_cs.txt");
    if (fileWrite.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
    {
        QTextStream stream(&fileWrite); // 修改这里的构造参数为 &fileWrite
        
        // 设置输出流的编码方式为UTF-8
        stream.setCodec(codec);

        stream << OutMsg;

        fileWrite.close();
    }
}

在这个修改后的代码中,我将QTextStream的构造函数中的参数更正为 &fileWrite,以确保将消息写入正确的文件对象。现在应该能够将日志消息成功写入到文件中了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:fromUnicode(msg)...">https://qt.0voice.com/?id=8609

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?