当前位置:   article > 正文

QT入门学习(二)_qt qstream

qt qstream

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();
    });
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

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

//读文件
        QByteArray array;
        while (file.atEnd()) 
        {
        array +=  file.readLine();   
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

写文件的三种方式:

		char buf[128]={0};
        file.write(QString("Hello world").toUtf8());
        file.write(buf,strlen(buf));
        file.write(buf);
  • 1
  • 2
  • 3
  • 4

文件流

	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();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

 	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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

打印的类型:
在这里插入图片描述
复习: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();
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/138791?site
推荐阅读
相关标签
  

闽ICP备14008679号