QT学习(9)——QT进行文件的读取,编码格式,获取文件信息,关于时间类型介绍

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

引出

QT学习(9)——QT进行文件的读取,编码格式,获取文件信息,关于时间类型介绍


文件操作

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

两种读取方式

QByteArray array = file.readAll(); // 方式一:读取全部
array += file.readLine();  // 方式二:逐行读取

编码格式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        ui->textEdit->setText(
                    codec->toUnicode(array));

进行写操作

    // 进行写文件
    file.open(QIODevice::Append); // 追加方式写
    file.write("aaaaa");
    file.close();

完整代码

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>
#include <QTextCodec>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 点击选取文件的按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=]()
    {
        QString filePath = QFileDialog::getOpenFileName(this,"打开文件","c:\\Users");

        // 将路径放文本框
        ui->lineEdit->setText(filePath);

        // 编码格式类
        QTextCodec *codec = QTextCodec::codecForName("gbk");

        // 读取内容 放入到 textEdit
        // QFile默认是utf-8
        QFile file(filePath); // 参数就是读取文件的路径
        // 设置打开方式,只读
        file.open(QIODevice::ReadOnly);

        // QByteArray array = file.readAll(); // 方式一:读取全部

        // 方式二:逐行读取
        QByteArray array;
        while (!file.atEnd()) {
            array += file.readLine();
        }

        // 将读取到的数据放入text框中
//        ui->textEdit->setText(array);
        ui->textEdit->setText(
                    codec->toUnicode(array));

        // 关闭
        file.close();

        // 进行写文件
        file.open(QIODevice::Append); // 追加方式写
        file.write("aaaaa");
        file.close();

    });
}

Widget::~Widget()
{
    delete ui;
}

文件信息

读到文件的信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后缀名

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后修改时间

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

获取参数的案例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于时间类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

qDebug() << "时间格式化" << info.birthTime().toString("yyyy/MM/dd hh:mm:ss");

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


总结

QT学习(9)——QT进行文件的读取,编码格式,获取文件信息,关于时间类型介绍

绘图学习

新建一个项目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用初体验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画笔颜色、宽度设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画笔类型设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

画刷的使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码

void Widget::paintEvent(QPaintEvent *event){
    // 实例化画家对象
    QPainter painter(this); // this指定的是绘图设备

    // 设置画笔
    QPen pen(QColor(255,0,0));
    pen.setWidth(2);
    pen.setStyle(Qt::DotLine);

    // 让画家使用笔
    painter.setPen(pen);


    // 设置画刷
    QBrush brush(Qt::cyan);
    brush.setStyle(Qt::Dense7Pattern);

    //画家使用画刷
    painter.setBrush(brush);

    // 线
    painter.drawLine(QPoint(0,0),QPoint(100,100));

    // 画一个圆
    painter.drawEllipse(QPoint(100,100),100,50); // 椭圆

    // 画一个矩阵
    painter.drawRect(QRect(20,20,50,50));

    // 画文字
    painter.drawText(QRect(10,200,200,50),"好好学习,天天吃饭");

}

高级设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

抗锯齿

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    painter.drawEllipse(QPoint(100,100),50,50);
    // 设置抗锯齿能力,效率低
    painter.setRenderHint(QPainter::Antialiasing);
    painter.drawEllipse(QPoint(200,100),50,50);

画家移动

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    painter.drawRect(QRect(20,20,50,50));

    // 移动画家
    painter.translate(100,0);
    painter.drawRect(QRect(20,20,50,50));

状态保存和还原

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 高级的设置 ///
    QPainter painter(this); // this指定的是绘图设备
//    painter.drawEllipse(QPoint(100,100),50,50);
//    // 设置抗锯齿能力,效率低
//    painter.setRenderHint(QPainter::Antialiasing);
//    painter.drawEllipse(QPoint(200,100),50,50);

    painter.drawRect(QRect(20,20,50,50));

    // 移动画家
    painter.translate(100,0);

    // 保存画家状态
    painter.save();

    painter.drawRect(QRect(20,20,50,50));

    painter.translate(100,0);

    // 还原画家的保存状态
    painter.restore();

    painter.drawRect(QRect(20,20,50,50));

画家画图片

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插曲:如何添加图片资源

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

右键,添加新文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

右键,open in Editor

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进行绘图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击按钮图片右移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

int posX = 0; // 横坐标默认是0,每次点击右移

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绘图的重绘,用update

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

超出屏幕的判断和处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    // 画家画图片 
    QPainter painter(this); // this指定的是绘图设备
    // 如果超出屏幕,从0开始
    if(posX > this->width()){
        posX = 0;
    }
    painter.drawPixmap(posX,0,QPixmap(":/OtherSceneBg.png"));
  • 24
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用Python和Qt读取音频文件并绘制波形图像的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog from PyQt5.QtGui import QPainter, QPen from PyQt5.QtCore import Qt, QFile, QIODevice import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('Waveform Viewer') self.setGeometry(100, 100, 800, 600) # create a menu bar menubar = self.menuBar() file_menu = menubar.addMenu('File') # add open file action open_file = file_menu.addAction('Open') open_file.triggered.connect(self.open_file_dialog) # initialize variables self.filename = None self.audio_data = None def open_file_dialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog self.filename, _ = QFileDialog.getOpenFileName(self, "Open Audio File", "", "WAV Files (*.wav)", options=options) if self.filename: self.load_audio_data() self.update() def load_audio_data(self): fs, data = wavfile.read(self.filename) if len(data.shape) > 1: data = data[:,0] # extract the first channel self.audio_data = data / 32768.0 # normalize the data to [-1,1] def paintEvent(self, event): if self.audio_data is not None: painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) pen = QPen(Qt.black, 1, Qt.SolidLine) painter.setPen(pen) x_scale = self.width() / len(self.audio_data) y_scale = self.height() / 2 x = 0 y = self.height() / 2 + self.audio_data[0] * y_scale for i in range(1, len(self.audio_data)): x1 = x + x_scale y1 = self.height() / 2 + self.audio_data[i] * y_scale painter.drawLine(x, y, x1, y1) x, y = x1, y1 if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() win.show() sys.exit(app.exec_()) ``` 该代码使用了PyQt5库来创建GUI窗口和菜单,并使用matplotlib和scipy库来读取和处理音频数据。在打开文件后,将音频数据绘制为波形图像。波形图像的绘制使用QPainter类的drawLine方法,将每个样本的值连接起来。通过调整x_scale和y_scale变量,可以调整波形图像的大小和比例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arya's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值