彻底解决QT写中文日志乱码,含源代码

设置办法

1、将CPP文件编码格式修改为UTF8-bom,可拷贝到windows,然后用notepad++进行格式转换;

2、日志文件函数如下:

#include <QCoreApplication>

#include<QDateTime >

#include <QDir >

#include <QFile >

#include <QTextStream >

void WriteLog(QString str)
{
    QDateTime currentTim = QDateTime::currentDateTime();

    //创建文件夹
    QString fileName = currentTim.toString("yyyyMMdd")+"_DataLog.log";
    QString strCurrentPath = QCoreApplication::applicationDirPath()+"/log/newdataconvert/"+fileName;

//防止文件夹不存在,导致写入失败
    QDir parentPath(QCoreApplication::applicationDirPath()+"/log/newdataconvert");
    if(!parentPath.exists())
    {

       //创建文件夹
        parentPath.mkpath(QCoreApplication::applicationDirPath()+"/log");
        parentPath.mkpath(QCoreApplication::applicationDirPath()+"/log/newdataconvert");
    }
    QFile writefile(strCurrentPath);
    writefile.open(QIODevice::WriteOnly | QIODevice::Append);//如果不存在则创建后写入
    QTextStream out(&writefile);
    out.setCodec(QTextCodec::codecForName("UTF8"));//设置编码格式
    out<<str<<"\r\n";
    writefile.close();
}

3、调用WriteLog(QString::fromLocal8Bit("我是xx123")),注意文字内容需要用QString::fromLocal8Bit进行转换

日志写入乱码解决完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 下面是一个简单的使用Qt的视频录像机的源代码示例,它可以实现简单的视频录制功能: ```c++ #include <QtWidgets/QApplication> #include <QtWidgets/QPushButton> #include <QtWidgets/QHBoxLayout> #include <QtMultimedia/QCamera> #include <QtMultimedia/QCameraViewfinder> #include <QtMultimedia/QVideoEncoderSettings> #include <QtMultimedia/QMediaRecorder> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个相机对象 QCamera *camera = new QCamera(); // 创建一个显示视频画面的视图控件 QCameraViewfinder *viewfinder = new QCameraViewfinder(); // 创建一个录制器对象 QMediaRecorder *recorder = new QMediaRecorder(camera); // 创建一个开始录制按钮 QPushButton *recordButton = new QPushButton("Start Recording"); // 创建一个水平布局管理器 QHBoxLayout *layout = new QHBoxLayout(); layout->addWidget(viewfinder); layout->addWidget(recordButton); // 创建一个窗口对象 QWidget *window = new QWidget(); window->setLayout(layout); window->show(); // 将相机的视频输出设置为视图控件 camera->setViewfinder(viewfinder); // 设置视频编码器参数 QVideoEncoderSettings settings; settings.setResolution(640, 480); settings.setFrameRate(30); // 设置录制器的视频编码器参数 recorder->setVideoSettings(settings); // 设置录制器输出的文件格式和文件名 recorder->setOutputFormat("avi"); recorder->setOutputLocation(QUrl::fromLocalFile("video.avi")); // 将录制器的状态绑定到开始录制按钮 QObject::connect(recordButton, &QPushButton::clicked, [=]() { if (recorder->state() == QMediaRecorder::StoppedState) { recorder->record(); recordButton->setText("Stop Recording"); } else { recorder->stop(); recordButton->setText("Start Recording"); } }); return app.exec(); } ``` 以上是一个简单的使用Qt的视频录像机的源代码示例,仅供参考。实际应用中,可能需要根据具体需求进行更多的功能和界面设计。 ### 回答2: 视频录像机是一种可以录制和保存视频的设备或软件。在使用Qt视频录像机的源代码时,可以使用Qt的多媒体模块来实现相关功能。 首先,我们需要创建一个Qt应用程序,并导入Qt的多媒体模块。然后,我们需要创建一个界面用于显示视频画面,并添加相应的按钮以控制录像机的功能。 在界面布局好后,我们可以使用Qt的多媒体模块来初始化摄像头设备,以获取视频数据。具体可以使用QCamera类来实现。我们可以在界面的初始化函数中创建QCamera对象,并将其关联到一个QCameraViewfinder对象上,以显示摄像头的视频画面。 接下来,我们可以为录像功能添加一个按钮,并在按钮的点击事件函数中实现录像的功能。在点击按钮时,我们可以使用QCameraCapture类来开始录制视频。我们可以定义一个成员变量来保存录像文件的路径和名称,并在点击按钮时调用QCameraCapture的start方法来开始录制。 同时,我们可以为停止录像功能添加一个按钮,并在按钮的点击事件函数中实现停止录像的功能。在点击按钮时,我们可以调用QCameraCapture的stop方法来停止录制,并关闭录制的文件。 最后,我们还可以为视频录像机添加其他功能,例如暂停、播放、保存等。具体实现方法可以根据需求进行扩展。 总之,使用Qt视频录像机的源代码,我们可以借助Qt的多媒体模块和相关类来实现摄像头的初始化、视频录制的开始与停止等功能,同时可以根据需求添加其他功能。 ### 回答3: 使用Qt一个视频录像机源代码需要以下步骤: 1. 导入必要的Qt库和模块,如QtCore、QtGui和QtMultimedia。 2. 创建一个Qt窗口应用程序,并设置窗口的大小和标题。 3. 在窗口中创建一个QMediaPlayer对象和一个QVideoWidget对象。 4. 设置MediaPlayer对象的输出为VideoWidget,将视频显示在窗口中。 5. 创建一个QCamera对象,用于捕获视频输入。 6. 设置QCamera对象的配置,如分辨率、帧率等。 7. 创建一个QMediaRecorder对象,用于录制视频。 8. 将QCamera对象设置为QMediaRecorder对象的视频输入源。 9. 为录制按钮添加点击事件,实现开始录制和停止录制的功能。 10. 在录制过程中,实时更新录制时间,并将录像保存到指定的文件路径中。 11. 在窗口中添加一些控制按钮,如播放、暂停、停止等,以便于用户操作录像。 12. 最后,运行应用程序,即可打开录像机窗口,并进行录制和播放操作。 具体实现时,需要熟悉Qt的多媒体模块的API,如QMediaPlayer、QVideoWidget、QCamera和QMediaRecorder等类的使用方法。同时,还需要了解Qt信号和槽机制,以及Qt界面设计和布局相关的知识,以实现一个功能完善且易用的视频录像机应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑娃的需求

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值