Qt——事件过滤器+文件读写

一.事件过滤器


bool Widget::eventFilter(QOBject *obj, QEvent *e){
    //判断窗口
    if((QLabel*)obj == ui->mylabel){
        //判断事件类型
        if(e->type() == QEvent::MouseMove){
            ui->mylabel->setText("--------");
            return true;	//返回true后,说明此事件已处理完毕,无需再次处理
        }
    }
    return QWidget::eventFilter(obj, e);
}

二.文件读写

1.读文件

#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
#include <QTextCodec>


connect(ui->pushButton,&QPushButton::clicked,[=](){
        //定义文件名
        QString fileName = QFileDialog::getOpenFileName(this,"open file","d:\\");
        //判断文件是否为空,空则弹出警告框
        if(fileName.isEmpty()==true){
            QMessageBox::warning(this,"warnning","文件打开失败");
            return;
        }
        //显示文件名
        ui->filePath->setText(fileName);
        //创建文件对象
        QFile file(fileName);
    	//设置文件编码格式
        QTextCodec* codec = QTextCodec::codecForName("gbk");
        //设置文件读取方式
        bool isok = file.open(QFile::ReadOnly);
        //判断读取方式是否可行
        if(isok == false){
            QMessageBox::critical(this,"ERROR","文件打开失败");
            return;
        }
        //将文件字节化
        QByteArray array = file.readAll();
        //显示到文本框
        ui->textEdit->setText(codec->toUnicode(array));
        //关闭文件
        file.close();
    });

2.写文件

//写文件的三种方式
        file.write(QString("hello world").toUtf8());//第一种
        char buf[102] = {0};//第二种
        file.write(buf,strlen(buf));
        file.write(buf);//第三种
//第四种
QFile f("aaa.txt");
    f.open(QFile::WriteOnly);
    QTextStream txt(&f);
    txt<<QString("hello,world")<<123456;
    f.close();

    QString buf1;
    f.open(QFile::ReadOnly);
    txt.setDevice(&f);
    txt>>buf1;//这种写,空格会终止读
    qDebug()<<buf1.toUtf8().data();
}

3.文件流

1.分类

#include<QTextStream> //基础数据类型:int, float ,string
#include<QDataStream> //QImage,QPoint,QRect.... 不依赖平台

2.QTextStream

 QTextStream stream(&file);
        QString array;
        while(!stream.atEnd()){
            array +=  stream.readLine();
        }
        stream.setCodec("UTF-8");
        //显示到文本框
        ui->textEdit->setText(array);

3.QDataStream

QFile f( "aaal.txt");
    f.open(QFile::WriteOnly);
    QDataStream ds(&f);
    ds<<QString ( "hello, world!") <<123456;
    f.close() ;
    QString buf1;
    int number;
    f.open(QFile::ReadOnly);
    ds.setDevice(&f);
    ds >> buf1 >> number;
    qDebug()<<buf1.toUtf8().data()<<number;
    QImage image ( "d:\\2.png");
    QByteArray aaaa;
    QDataStream ss(&aaaa, QIODevice::ReadWrite);
    ss<<image;

4.QFileInfo

  • 输出文件信息
QFileInfo info("d:\\2.png");
    qDebug()<<"大小:"<<info.size();
    qDebug()<<"路径:"<<info.path();
    qDebug()<<"最后一次修改时间:"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值