4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(
新建项目13IO
13IO.pro |
HEADERS MyWidget.h SOURCES MyWidget.cpp QT CONFIG |
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 |
#include #include #include #include //#include //#include //#include /** * * * * * * * */ MyWidget::MyWidget(QWidget QWidget(parent) { QBuffer buffer.open(QIODevice::ReadWrite); buffer.write("abc"); buffer.write("aabbcc"); buffer.close(); //能够知道buffer中存储的是缓冲区,通过以下的方式看看buffer中的内容是什么 qDebug() } int { QApplication MyWidget w.show(); return } |
执行结果: |
3 QBuffer |
#include #include #include #include #include //#include //#include /** * * * * * * * */ MyWidget::MyWidget(QWidget QWidget(parent) { // QBuffer //不要路径。由于它的内容是写在内存里面的。 buffer.open(QIODevice::ReadWrite); QPixmap //pixmap的save实际上有两个參数。保存成对应的文件的时候要指定对应的格式,PNG是不是真,JPG是失真的。 JPG是有损压缩,PNG是无损压缩。 pixmap.save(&buffer, buffer.close(); qDebug() // QPixmap //通过loadFromData把它收起来。 pixmap2.loadFromData(buffer.buffer(), QLabel* label->setPixmap(pixmap2); } int { QApplication MyWidget w.show(); return } |
执行结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> |
4 QByteArray和QString之间的差别 |
#include #include #include #include #include //#include //#include /** * * * * * * * */ MyWidget::MyWidget(QWidget QWidget(parent) { //关于QByteArray和QString //QByteArray编码的时候将一个汉字编码成3个字节 QByteArray //QSting中有自己字符,它的大小就是几个字符 QString qDebug() } int { QApplication MyWidget w.show(); return } |
5 QTextStream和QDataStream的差别 |
#include #include #include //#include #include //#include #include //#include /** * * * * * * * */ MyWidget::MyWidget(QWidget QWidget(parent) { QFile //QTextStream须要一个QIODevice来构造它 file.open(QIODevice::ReadWrite); QTextStream //通过以下的方式能够写文件,而且文件内容中是正常的 textStream file.close(); //执行之后,在项目所在文件夹下发现多了teststream.txt文件,文件内容例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> #if //假设想写进去非常方便读出来的话使用DataStream QFile file.open(QIODevice::ReadWrite); QDataStream dataStream file.close(); //上面的执行结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> #endif } int { QApplication MyWidget w.show(); return } |
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(); } //执行结果: |
4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(的更多相关文章
- 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 ...
- paip.c++ qt 目录遍历以及文件操作
paip.c++ qt 目录遍历以及文件操作 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...
- QFile文件操作-QT
#include <QCoreApplication> #include<QFile> #include<QString> #include<QDebug&g ...
- Qt之课外实践——文件操作(简单清道夫)
说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的 ...
- Qt中与文件目录相关操作
一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...
- qt中执行 sql文件的方法
由于qt中没有原生的执行sql文件的方法.因此我们需要根据sql文件中的流的特点,将其分解成一个个语句单独执行. 1.首先通过Qfile读取sql文件 2.将sql文件中的内容通过“:”进行拆解 3. ...
- 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 ...
- QT中的pro文件的编写
原地址:http://blog.csdn.net/fjb2080/article/details/4833666 我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程 ...
- java中io对文件操作的简单介绍
11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...
随机推荐
- Walls and Gates -- LeetCode
You are given a m x n 2D grid initialized with these three possible values. -1 - A wall or an obstac ...
- ARC 098 D - Xor Sum 2
Problem Statement There is an integer sequence A of length N. Find the number of the pairs of intege ...
- [LOJ6278]数列分块入门 2
题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问区间$[l,r]$中小于$c^2$的数的个数.思路 ...
- AFNetworking 2.0 Tutorial
Update 1/18/2014: Fully updated for iOS 7 and AFNetworking 2.0 (original post by Scott Sherwood, upd ...
- linux的dd命令详解
一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 块大小可以使用的计量表 参数注释: 1. if=文件名:输入文件名,缺省为标准输入stdin.即指定源文件.< ...
- 倍福TwinCAT(贝福Beckhoff)基础教程6.1 TwinCAT如何与高级语言通讯
因为使用TwinCAT的人用途不同,重视点就不同.如果用来代替传统PLC+HMI做项目的,很少会需要用到跟高级语言通讯,但是如果是用来做运动控制平台如做机器人运动控制器的,就肯定会用到.不管是否用得上 ...
- autoRelease
cocos2dx采用的是引用计数的方式来管理对象的持有和释放. 所谓引用计数就是说,每个对象都会有一个属性用来记录当前被几个地方引用了.在释放内存的时候会根据这个引用计数来确定是否要用delete操作 ...
- 使用ByteRef加速String类型DocValues的载入
眼下商户索引DocValues很大,warmup时花费70-80秒(在beta环境),有62秒在载入DocValues,发现当中有54秒时间在载入string docvalues,string doc ...
- Odoo many2many command
CREATE = lambda values: (0, False, values) // (0,False, Values) //创建 UPDATE = lambda id, values: (1, ...
- VM里面的桥接
今天我们谈一谈桥接模式,一般的时候,我用的是NAT模式,需要设置另一个虚拟网卡的IP地址,而不是借助本机的物理网卡. 编辑---虚拟网络编辑器 有些时候直接设置桥接到某个网卡可能会不成功,我们 ...