【QT】文件读写,文件对话框

一.QFile类

QFile提供了从文件中读取和写入数据的能力。

我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。

QFile是QIODevice的子类,利用QFile可以对文件进行打开,读取,写入的操作。

可以使用QDataStream或QTextStream类来读写文件,也可以用QIODevice类自带的read()、readLine()、readAll()以及write()这样的函数。

获取一个文件的信息使用QFileInfo类。

二.读取文件/写入文件

1.直接使用其自带的读写函数read/write读取

cpp 复制代码
    // File类读取
    QFile file("C:\\Users\\SlanderMC\\Desktop\\111.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);
    char text[5000];
    file.read(text,5000);
    qDebug()<<text;
    file.close();
    //File类创建写入
    QFile file2("C:\\Users\\SlanderMC\\Desktop\\222.txt");
    file2.open(QIODevice::WriteOnly|QIODevice::Text);
    file2.write("123456");
    file2.close();

打开函数open,内部参数指的是打开文件的方式

复制代码
QIODevice::NotOpen              未打开
QIODevice::ReadOnly             以只读方式打开
QIODevice::WriteOnly            以只写方式打开
QIODevice::ReadWrite            以读写方式打开
QIODevice::Append               以追加的方式打开,新增加的内容将被追加到文件末尾 
QIODevice::Truncate             以重写的方式打开,在写入新的数据时会将原有
 QIODevice::Truncate            以重写的方式打开,在写入新的数据时会将原有      数据全部                                                   清除,游标设置在文件开头。
QIODevice::Text                 在读取时,将行结束符转换成 \n;在写入时, 将行结束符转换成本地格式,例如 Win32 平台上是 \r\n
QIODevice::Unbuffered 忽略缓存

2.使用QTextStream类写入和读取文件

读入可以使用readline逐行读入,也可以使用read设置大小读入

写入时,可直接使用<<重载运算符

cpp 复制代码
   //通过QTextStream读写文件
    QFile file("C:\\Users\\SlanderMC\\Desktop\\111.txt")    ;
    file.open(QIODevice::ReadWrite|QIODevice::Text);
    QTextStream stream(&file);
    //读
    stream.setEncoding(QStringConverter::Utf8);
    // QString s = stream.read(file.size());
    //  qDebug()<<s;
    while(!stream.atEnd())
    {
        QString s = stream.readLine();
        qDebug()<<s;
    }
   //写
    stream<<"1111111";

三.QT中文件对话框QFileDialog

QFileDialog::getOpenFileName(parent,"对话框名称","默认打开文件夹","文件类型");

返回值:QString 返回选择的文件名称filename

示例:

cpp 复制代码
QString filename = QFileDialog::getOpenFileName
(this,"文件选择","C:\\Users\\SlanderMC\\Desktop",tr("Text (*.txt *.doc)"));

四.自定义记事本,实现文件读取,文件保存

为按钮设置信号槽,左一按钮为打开文件,左二按钮为保存文件。

利用QFileDialog选择文件,再利用QFile类打开文件,最后使用QTextStream读取和写入文件。实现功能。

cpp 复制代码
void Widget::on_btnopen_clicked()
{
    //文件内容显示到编辑栏中
    QString filename = QFileDialog::getOpenFileName(this,"open","C:\\Users\\SlanderMC\\Desktop");
    QFile file(filename);
    file.open(QIODevice::ReadOnly|QIODevice::Text);
    QTextStream stream(&file);
    stream.setEncoding(QStringConverter::Utf8);
    QString str = stream.readAll();
    ui->textEdit->setText(str);
    file.close();
}


void Widget::on_btnsave_clicked()
{
    //编辑后的内容保存到文件
    QString strsave = QFileDialog::getSaveFileName(this,"保存文件","C:\\Users\\SlanderMC\\Desktop");
    QFile file(strsave);
    file.open(QIODevice::WriteOnly|QIODevice::Text);
    QTextStream stream(&file);
    stream<<ui->textEdit->toPlainText();
    file.close();
}
相关推荐
全职计算机毕业设计13 分钟前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
5:0032 分钟前
云备份项目
linux·开发语言·c++
笨笨马甲1 小时前
Qt Quick模块功能及架构
开发语言·qt
夜晚回家1 小时前
「Java基本语法」代码格式与注释规范
java·开发语言
YYDS3141 小时前
C++动态规划-01背包
开发语言·c++·动态规划
前端页面仔2 小时前
易语言是什么?易语言能做什么?
开发语言·安全
树叶@2 小时前
Python数据分析7
开发语言·python
wydaicls2 小时前
十一.C++ 类 -- 面向对象思想
开发语言·c++
Biomamba生信基地3 小时前
R语言基础| 下载、安装
开发语言·r语言·生信·医药
姜君竹3 小时前
QT的工程文件.pro文件
开发语言·c++·qt·系统架构