一.事件过滤器
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");