Qt笔记——QFile,QDataStream,QTextStream
QFile
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private slots:
void on_readButton_clicked(); void on_writeButton_clicked(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>
#include <QDataStream> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
} void Widget::on_readButton_clicked()
{
QString path = QFileDialog::getOpenFileName(this,
"open",
"../",
"TXT(*.txt)");
if(path.isEmpty() == false)
{
QFile file(path);
bool isOK = file.open(QIODevice::ReadOnly);
if(isOK == true)
{
#if 0
//默认只识别utf8编码
QByteArray array = file.readAll();
//ui->textEdit->setText(QString(array));
ui->textEdit->setText(array);
#endif
QByteArray array;
while (file.atEnd() == false)
{
array += file.readLine();
}
ui->textEdit->setText(array); }
file.close(); QFileInfo info(path);
qDebug()<<info.fileName();
qDebug()<<info.suffix();
qDebug()<<info.size();
qDebug()<<info.created().toString("yyyy-MM-dd hh:mm:ss");
}
} void Widget::on_writeButton_clicked()
{
QString path = QFileDialog::getSaveFileName(this,"save","../","TXT(*.txt)");
if(path.isEmpty() == false)
{
QFile file;
file.setFileName(path);
bool isOk = file.open(QIODevice::WriteOnly);
if(isOk == true)
{
QString str = ui->textEdit->toPlainText();
file.write(str.toUtf8());
//file.write((str.toStdString().data()));
}
file.close();
}
}
QDataStream
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget();
void writeData();
void readData();
private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QDataStream>
#include <QTextStream>
#include <QFile>
#include <QDebug> #define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
writeData();
readData();
} Widget::~Widget()
{
delete ui;
}
void Widget::writeData()
{
QFile file("../fff.txt");
bool isOK = file.open(QIODevice::WriteOnly);
if (true == isOK)
{
//创建数据流,和file文件关联
//往数据流中写数据,相当于往文件里写数据 QDataStream stream(&file);
stream<<QString("hello world")<<; }
file.close();
} void Widget::readData()
{
QFile file("../fff.txt");
bool isOK = file.open(QIODevice::ReadOnly);
if (true == isOK)
{
//创建数据流,和file文件关联
//往数据流中读数据,相当于往文件里写数据
QString str;
int a;
QDataStream stream(&file);
stream>>str>>a;
cout<<str<<a; }
file.close();
}
QTextStream
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget();
void writeData();
void readData(); private slots:
void on_pushButton_clicked(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QFileDialog>
#define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
writeData();
readData();
} Widget::~Widget()
{
delete ui;
} void Widget::writeData()
{
QFile file;
file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::WriteOnly);
if(true == isOK)
{
QTextStream stream(&file);
//指定编码
stream.setCodec("UTF-8");
stream << QString("hello world")<<;
file.close();
}
} void Widget::readData()
{
//这么读有问题
QFile file;
file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::ReadOnly);
if(true == isOK)
{
QTextStream stream(&file);
//指定编码
stream.setCodec("UTF-8");
QString str;
int a;
stream >>str>>a;
cout<<str<<a;
file.close();
}
} void Widget::on_pushButton_clicked()
{
QString path = QFileDialog::getOpenFileName(this,
"read",
"../"
);
if(false == path.isEmpty())
{
QFile file;
file.setFileName(path);
bool isOK = file.open(QIODevice::ReadOnly);
if(true == isOK)
{
QTextStream stream(&file);
stream.setCodec("UTF-8");
QString str = stream.readAll();
ui->textEdit->setText(str);
file.close();
}
} }
QBuffer
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QBuffer>//内存文件
#include <QDebug> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); QBuffer memFile;
memFile.open(QIODevice::WriteOnly); memFile.write("hello");
memFile.write("world"); memFile.close(); qDebug()<<memFile.buffer(); QBuffer memFile1;
memFile1.open(QIODevice::WriteOnly);
QDataStream stream(&memFile1);
stream<<QString("测试")<<;
memFile1.close(); qDebug()<<QString(memFile.buffer()).toUtf8().data();//输出有问题
//输出正确
memFile1.open(QIODevice::ReadOnly);
QDataStream in(&memFile1);
QString str;
int a;
in>>str>>a;
memFile1.close();
qDebug()<<str.toUtf8().data()<<a;
} Widget::~Widget()
{
delete ui;
}
Qt笔记——QFile,QDataStream,QTextStream的更多相关文章
- QFile QDataStream QTextStream
#include <QCoreApplication> #include <QMap> #include <QFile> #include <QDir> ...
- Qt:QFile、QIODevice
QFile 0.说明 QFile是读写文件的类,这里的文件包括文本文件.二进制文件.资源文件. 通常情况下,文件读写使用QFile.QTextStream.QDataStream就够了. file n ...
- QT笔记之VS2010 Qt中导入qrc资源文件
转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...
- QT笔记之VS2012 TCP传送文件
注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...
- QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错
转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...
- QT笔记之VS开发程序遇到的问题
转载:http://www.cnblogs.com/li-peng/p/3644812.html 转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experien ...
- QT笔记之不规则窗口的实现
QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com ...
- QT笔记之模态对话框及非模态对话框
模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...
- QT笔记之QLineEdit自动补全以及控件提升
转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=r ...
随机推荐
- 指针C语言
一.PTA实验作业 题目一:6-7输出月份英文名 1.PTA提交列表 2.设计思路和流程图 这题只需补充子函数,定义指针数组month[12],分别从一月到十二月,再定义一个字符,让它为NULL,当输 ...
- Redis的高级应用——数据安全
Redis的数据保存在内存中,速度十分快.这也就意味着,一个恶意破解redis数据库密码的用户,可以在一秒钟进行更多的尝试.如果用户密码级别较低或更换频率过长,就会造成致命的危害. 1.设置用户 Re ...
- chrome & dark theme
chrome & dark theme Dark Reader Extensions https://darkreader.org/help/en/ https://chrome.google ...
- ashx文件和aspx
ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看: <%@ WebHandler Language="C#" Class="Handler&q ...
- BZOJ4327 JSOI2012玄武密码(AC自动机)
当然可以在SA上二分答案,但看起来会被卡log.考虑对模板串建出AC自动机,用母串在上面跑,标记上所有能到达的点.注意到达某个点时需要标记所有其通过fail指针可以走到的点,如果遇到一个标记过的点就可 ...
- P4754 True Vegetable
题目描述 小A现在有 NN 道题,编号为 1,2,\cdots,N1,2,⋯,N .每道题的起始毒瘤程度为 00 或 11 .在每回合,小A可以将编号连续的 KK 道题的毒瘤程度+1.但小B因为本身比 ...
- NAPT 分为锥型(Cone)和 对称型(Symmetric)
NAPT 分为锥型(Cone)和 对称型(Symmetric) 链接:https://www.zhihu.com/question/38729355/answer/86531260 实际上大部运营商提 ...
- [HAOI2007]理想的正方形 st表 || 单调队列
~~~题面~~~ 题解: 因为数据范围不大,而且题目要求的是正方形,所以这道题有2种解法. 1,st表. 这种解法暴力好写好理解,但是较慢.我们设st[i][j][k]表示以(i, j)为左端点,向下 ...
- POJ 开关问题 解题报告
开关问题 Time Limit: 1000MS Memory Limit: 30000K Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他 ...
- 雪碧图background-position的rem用法
background的雪碧图配合rem就正常写即可,要加上background-size,大小为sprites的原图尺寸,宽高为一帧的尺寸.例如: .player{ width: 2.32rem; / ...