1. 新建项目13IO

13IO.pro

HEADERS
+=
\

MyWidget.h

SOURCES
+=
\

MyWidget.cpp

QT
+=
gui widgets
network

CONFIG
+=
C++11

MyWidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H
 
#include <QWidget>
 
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent);
 
signals:
 
public slots:
 
};
 
#endif // MYWIDGET_H

MyWidget.cpp

#include "MyWidget.h"
#include <QFile>
#include <QApplication>
//#include <QDebug>
//#include <QBuffer>
//#include <QLabel>
//#include <QTextStream>
//#include <QDataStream>
 
/**
 * QFile
 * QBuffer     //memory file
 * QTcpSocket
 * QUdpSocket
 *
 * QDataStream
 * QTextStream
 */
 
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent)
{
    //QT中不建议使用char *这种类型的数据类型
    QFile file("../MyTest.txt");
    file.open(QIODevice::ReadWrite);
 
    file.write(QByteArray("abc"));
    //同样,QFile中也有如下方法
    //file.seek();
    //file.write();
    file.close();
}
 
int main(int argc,char** argv)
{
    QApplication app(argc,argv);
 
    MyWidget w;
    w.show();
 
    return app.exec();
}

运行结果:

生成的MyTest.txt文件的内容如下:

2
关于QBuffer

#include
"MyWidget.h"

#include
<QApplication>

#include
<QDebug>

#include
<QBuffer>

//#include
<QLabel>

//#include
<QTextStream>

//#include
<QDataStream>

/**

*
QFile

*
QBuffer    
//memory
file

*
QTcpSocket

*
QUdpSocket

*

*
QDataStream

*
QTextStream

*/

MyWidget::MyWidget(QWidget
*parent)
:

QWidget(parent)

{

QBuffer
buffer;

buffer.open(QIODevice::ReadWrite);

buffer.write("abc");

buffer.write("aabbcc");

buffer.close();

//可以知道buffer中存储的是缓冲区,通过下面的方式看看buffer中的内容是什么

qDebug()
<<
buffer.buffer();

}

int
main(int
argc,char**
argv)

{

QApplication
app(argc,argv);

MyWidget
w;

w.show();

return
app.exec();

}

运行结果:

3 QBuffer
和 QPixmap实现在Label上添加图片,下面是内存文件的应用

#include
"MyWidget.h"

#include
<QApplication>

#include
<QDebug>

#include
<QBuffer>

#include
<QLabel>

//#include
<QTextStream>

//#include
<QDataStream>

/**

*
QFile

*
QBuffer    
//memory
file

*
QTcpSocket

*
QUdpSocket

*

*
QDataStream

*
QTextStream

*/

MyWidget::MyWidget(QWidget
*parent)
:

QWidget(parent)

{

//
send
side

QBuffer
buffer;

//不要路径,因为它的内容是写在内存里面的。

buffer.open(QIODevice::ReadWrite);

QPixmap
pixmap("../aaa.png");

//pixmap的save实际上有两个参数,保存成相应的文件的时候要指定相应的格式,PNG是不是真,JPG是失真的。JPG是有损压缩,PNG是无损压缩。

pixmap.save(&buffer,
"PNG");

buffer.close();

qDebug()
<<
buffer.buffer().size();

//
recv
side

QPixmap
pixmap2;

//通过loadFromData把它收起来。

pixmap2.loadFromData(buffer.buffer(),
"PNG");

QLabel*
label
=
new
QLabel(this);

label->setPixmap(pixmap2);

}

int
main(int
argc,char**
argv)

{

QApplication
app(argc,argv);

MyWidget
w;

w.show();

return
app.exec();

}

运行结果:

4 QByteArray和QString之间的区别

#include
"MyWidget.h"

#include
<QApplication>

#include
<QDebug>

#include
<QBuffer>

#include
<QLabel>

//#include
<QTextStream>

//#include
<QDataStream>

/**

*
QFile

*
QBuffer    
//memory
file

*
QTcpSocket

*
QUdpSocket

*

*
QDataStream

*
QTextStream

*/

MyWidget::MyWidget(QWidget
*parent)
:

QWidget(parent)

{

//关于QByteArray和QString

//QByteArray个字节

QByteArray
ba("涂作权");

//QSting中有自己字符,它的大小就是几个字符

QString
str("涂作权");

qDebug()
<<
ba.size()
<<
str.size();

}

int
main(int
argc,char**
argv)

{

QApplication
app(argc,argv);

MyWidget
w;

w.show();

return
app.exec();

}

5 QTextStream和QDataStream的区别

#include
"MyWidget.h"

#include
<QApplication>

#include
<QDebug>

//#include
<QBuffer>

#include
<QFile>

//#include
<QLabel>

#include
<QTextStream>

//#include
<QDataStream>

/**

*
QFile

*
QBuffer    
//memory
file

*
QTcpSocket

*
QUdpSocket

*

*
QDataStream

*
QTextStream

*/

MyWidget::MyWidget(QWidget
*parent)
:

QWidget(parent)

{

QFile
file("../teststream.txt");

//QTextStream需要一个QIODevice来构造它

file.open(QIODevice::ReadWrite);

QTextStream
textStream(&file);

//通过下面的方式可以写文件,并且文件内容中是正常的

textStream
<<
1
<<
"abc"
<<
1.2
<<
QString("abc");

file.close();

//运行之后,在项目所在目录下发现多了teststream.txt文件,文件内容如下:

#if
0

//如果想写进去很方便读出来的话使用DataStream

QFile
file("../teststream.txt");

file.open(QIODevice::ReadWrite);

QDataStream
dataStream(&file);

dataStream

<< "abc"
<< 1.2
<< QString("abc")
);

file.close();

//上面的运行结果如下:

#endif

}

int
main(int
argc,char**
argv)

{

QApplication
app(argc,argv);

MyWidget
w;

w.show();

return
app.exec();

}

6
内存映射,虚拟内存,可以使用多台电脑操作同一个文件(只要指针指向文件的位置不同就可以)

#include "MyWidget.h"
#include <QApplication>
#include <QDebug>
//#include <QBuffer>
#include <QFile>
//#include <QLabel>
#include <QTextStream>
//#include <QDataStream>
 
/**
 * QFile
 * QBuffer     //memory file
 * QTcpSocket
 * QUdpSocket
 *
 * QDataStream
 * QTextStream
 */
 
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent)
{
    //虚拟内存和内存映射,QFile可以自动创建文件
    QFile file("../map.txt");
 
    file.open(QIODevice::ReadWrite);
    //扩展文件的大小为64k
    file.seek(64 * 1024);
    //
    file.write("1");
    //文件关闭
    file.close();
    //然后再通过ReadWrite的方式构造它
    file.open(QIODevice::ReadWrite);
    //构造内存映射
    uchar* ptr = file.map(0,64*1024);
    //可以像指针一样来操作文件内容
    *ptr = 'a';
    ptr[1] = 'b';
 
    //read file
    uchar ch = *ptr;
    file.unmap(ptr);
    file.close();
}
 
int main(int argc,char** argv)
{
    QApplication app(argc,argv);
 
    MyWidget w;
    w.show();
 
    return app.exec();
}
//运行结果:

4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(的更多相关文章

  1. 4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  2. paip.c++ qt 目录遍历以及文件操作

    paip.c++ qt 目录遍历以及文件操作 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/a ...

  3. QFile文件操作-QT

    #include <QCoreApplication> #include<QFile> #include<QString> #include<QDebug&g ...

  4. Qt之课外实践——文件操作(简单清道夫)

    说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的 ...

  5. Qt中与文件目录相关操作

    一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...

  6. qt中执行 sql文件的方法

    由于qt中没有原生的执行sql文件的方法.因此我们需要根据sql文件中的流的特点,将其分解成一个个语句单独执行. 1.首先通过Qfile读取sql文件 2.将sql文件中的内容通过“:”进行拆解 3. ...

  7. Qt中MySQL数据库的操作例程

    数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin ...

  8. QT中的pro文件的编写

    原地址:http://blog.csdn.net/fjb2080/article/details/4833666 我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程 ...

  9. java中io对文件操作的简单介绍

    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...

随机推荐

  1. hdu 1130 How Many Trees?(Catalan数)

    How Many Trees? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. switch 循环中的case理解

    case后面的常量表达式是程序的入口,一旦找到入口后,后面的其他的case就没有用了,程序就会继续执行后面的所有代码

  3. 《java技术》第二次作业

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载? 1)没有返回值,名字与类名相同,当新对象被创建的时候,构造函数会被调用,要想构造函数,必须声明对象并对其初始化.每一个类都有构造函数,如果没 ...

  4. Android编译安装失败解决办法

    今天用AndroidStudio开发了一个手机App玩玩,但是偶然遇到一个问题,自己手机上测试得劲的很,分享给朋友做测试,但是nie,意外出现了.... 两个人都给我说个安装失败,这个就比较尴尬了,找 ...

  5. js遍历 for-of

    for-of遍历 entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组.对于数组,键名就是索引值:对于 Set,键名与键值相同.Map 结构的 Iterator 接口,默认就是调 ...

  6. 关于一些基础的Java问题的解答(四)

    16. Java面向对象的三个特征与含义 java中的面向对象的三大基本特征分别是:封装.继承.多态: 封装:把过程和数据包围起来,对数据的访问只能通过已定义的界面,主要是方便类的修改 继承:对象的一 ...

  7. web性能优化之--合理使用http缓存和localStorage做资源缓存

    一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...

  8. 去掉textarea和input在ios下默认出现的圆角

    -webkit-appearance:none;/*清除ios默认圆角*/ border-radius:0;

  9. 用JavaScript按一定格式解析出URL 串中所有的参数

    1.先看看location对象 2.其中的search属性就获取当前URL的查询部分(问号?之后的部分) 3.改造location.search 比如当前URL为:https://www.hao123 ...

  10. 初识Redis系列之一:简单介绍

    一:Redis是什么? Redis全称:REmote DIctionary Server(Redis) .Redis是一个由Salvatore Sanfilippo写的key-value存储系统,AN ...