QT入门学习(二)

Day_4

Review

1、自定义控件
1、创建一个自定义控件
2、在要提升的控件身上右键->提升为。
3、对话框 – 添加类(自定义类的名字)->提升
2、绘图和设备
1>画家类: QPainter
QPainter 设置绘图设备
1、构造函数的参数 ->QPainter p(绘图设备)
2、在当前窗口中画图:
重写paintEvent()函数
2> 绘图设备
1、QPixmao p;
p.load(路径)—加载图片
a、专门为图像再屏幕上的显示做了优化、依赖于平台
b、主要应用于平台上的图像显示,在不同的平台拥有相同的效果
2.QBitmap
是QPixmap的一个子类 只显示黑白色。
3.QImage
a、使用独立于硬件的绘制系统,专门为图像的像素级访问做了优化
b、可以在多线程中使用
c、可以修改图片的任何一个像素值
4.QPicture–二进制文件
a、记录和重现QPainter的各条指令
b、与平台无关
3、QPixmap和QImage直接的相互转换 QPixmap
1、QPixmap->QImage: QPixmap::toImage()
2、QImage->QPixmap::fromImage()[static]
4、手动更新窗口函数:
update();

QFile操作-没学QFile等于没学QT。

文件的读写操作

打开指定文件并且显示在指定窗口:
添加如下代码:

#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->selcetFile,&QPushButton::clicked,this,[=]()
    {
        QString FileName = QFileDialog::getOpenFileName(this,"open file","d:\\");
        if(FileName.isEmpty()==true)
        {

            QMessageBox::warning(this,"warning","select file failed");
            return ;
        }
        ui->filePath->setText(FileName);
        //创建文件对象
        //默认读取文件格式:utf8
        QFile file(FileName);
        QTextCodec *code = QTextCodec::codecForName("gbk");
        //指定打开方式
        bool isOk = file.open(QFile::ReadOnly);
        if(isOk == false)
        {
           QMessageBox::critical(this,"ERROR","file open failed");
           return;
        }
        //读文件
        QByteArray array =  file.readAll();
        //显示到文本框
        ui->textEdit->setText(array);
        ui->textEdit->setText(code->toUnicode(array));
        //关闭文件
        file.close();
    });
}

如何用readline判断读到了最后一行:

//读文件
        QByteArray array;
        while (file.atEnd()) 
        {
        array +=  file.readLine();   
        }

写文件的三种方式:

		char buf[128]={0};
        file.write(QString("Hello world").toUtf8());
        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();

打印的类型:
在这里插入图片描述

 	QFile f("aaa.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;

打印的类型:
在这里插入图片描述
复习:QFile f;
1、f.setFileName(stringpathname);
2、打开文件 open(QFile::ReadOnly)
char buf[111];
3、读文件 read(char *buf,int size);
QByteArray array =readAll();
while(file.atEnd()==false)
QByteArray line =readLine();
4、close();
5、默认格式为 utf8

文件流操作
方式1:
QFile f;
QTextStream stream(&f);
方式2:
QTextStream stream;
stream.setDevice(&f);
stream <<“aaaaaaf”;写入设备中
stream>>str; 读到内存中

QDataStream ds(&f);
QTextStream stream(&f);
stream.setDevice(&f);
//写数据
ds << QString(“hello world”)<<123456;
ds>>string>>number>>QImage;

QDataStream sa(&array,QIODevice::ReadWrite);
sa<<image;

获取文件信息

添加如下头文件#include <QFileInfo>
参数为文件名。
在这里插入图片描述
包含如下头文件#include <QDateTime>
打印文件字节大小。打印文件路径。打开文件名称。显示最后修改的日期。


QFileInfo info("D:\\mypic.jpg");
    qDebug()<<"file size :"<<info.size();
    qDebug()<<"file path :"<<info.path();
    qDebug()<<"file path :"<<info.fileName();

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值