4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
来源:互联网 发布:天书世界阵法1升2数据 编辑:程序博客网 时间:2024/05/17 01:00
新建项目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 = 0);
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编码的时候将一个汉字编码成3个字节
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 << 1 << "abc" << 1.2 << QString("abc") << QPoint(1,1);
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);
//向文件中写入1
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();
}
//运行结果:
From: http://blog.csdn.net/tototuzuoquan/article/details/41939773
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- QTextStream和QDataStream的区别
- QTextStream和QDataStream的区别
- QTextStream和QDataStream的区别
- Qt中的QString和QByteArray之间转换
- QString和QByteArray的区别
- QString和QByteArray的区别
- Qt中的QString和QByteArray
- Qt中的QString和QByteArray
- Qt中的QString和QByteArray
- qt中的QString和QByteArray
- Qt中的QString和QByteArray
- Qt中的QString和QByteArray
- Qt中的 QString和QByteArray
- Qt中的QString和QByteArray
- Qt中的QString和QByteArray
- Qt中的QString和QByteArray
- [leetcode]12. Integer to Roman(Java)
- 1610: [Usaco2008 Feb]Line连线游戏
- 解决 Chrome最新版右键工具中的"编码"修改功能没有了的工具
- C语言的简单应用(四)
- 找餐饮设计公司 这些要了解透彻
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- 【2-SAT+Tarjan】POJ3207 Ikki's Story IV
- python + sklearn ︱分类效果评估——acc、recall、F1、ROC、回归、距离
- HTTP(一)
- C++中的const讲解(3)---《Effective C++》
- 62、foreach与可变参数(108)
- 【算法入门】广度/宽度优先搜索(BFS)
- 227. Basic Calculator II(unsolved)
- OCP 11G 051题库解析汇总链接