Qt文件读写的天花板QFile和QTextStream搭配第二集

Qt文件读写的天花板QFile和QTextStream搭配第二集

  • 一、QFile和QTextStream简介
  • 二、QFile和QTextStream举例

在这里插入图片描述
想看更多精彩内容内容,锁定:
Qt文件读写的天花板QFile和QTextStream搭配第二集_第1张图片


Qt设计师专栏


文件读写共计3集,想看全集记得去Qt专栏

一、QFile和QTextStream简介

QTextStream fileCtrl(&file)
注意点 -》必须添加下面这个函数
fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
fileCtrl<

二、QFile和QTextStream举例

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include
#include
#include
#include
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
MainWindow::~MainWindow()
{
    delete ui;
}
//打开文件
void MainWindow::on_openfile_clicked()
{
    QString curPath =QDir::currentPath();//获取当前路径
    qDebug()<<"curPath="<<curPath<<endl;//默认编译路径
    QString openTitle ="打开一个文件";
    QString filter ="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";//文件过滤器
    QString FilePath = QFileDialog::getOpenFileName(this,openTitle,curPath,filter);
    qDebug()<<"FilePath="<<FilePath<<endl;
    if(FilePath.isEmpty()){
        return;
    }
    myCreatePublicOpenTextByIODevice(FilePath);
}
//文件读写采用QTextStream方式
bool MainWindow::myCreatePublicOpenTextByIODevice(const QString &FilenamePath)
{
    QFile file(FilenamePath);
    if(!file.exists())//文件不存在
    {
        qDebug()<<file.errorString()<<endl;
        return false;
    }
    //打开文件:只读,识别\n符
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
        return false;//文件打开失败
    //创建文本流
    QTextStream fileCtrl(&file);
    fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
    //追加方式显示
    //ui->plainTextEdit->appendPlainText(file.readAll());//一次性读完
    //每次读取有一行
     qDebug()<<"filename="<<file.fileName()<<endl;
    while(!fileCtrl.atEnd())
    {
        ui->plainTextEdit->appendPlainText(fileCtrl.readLine());
    }
    file.close();//关闭文件
    return true;
}
//文件另存
void MainWindow::on_filesave_clicked()
{
    QString curPath =QDir::currentPath();//获取当前路径
    qDebug()<<"curPath="<<curPath<<endl;//默认编译路径
    QString openTitle ="另存文件";
    QString filter ="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";//文件过滤器
    QString FilePath = QFileDialog::getOpenFileName(this,openTitle,curPath,filter);
    qDebug()<<"FilePath="<<FilePath<<endl;
    if(FilePath.isEmpty()){
        return;
    }
    myCreatePublicSaveFile(FilePath);
}
bool MainWindow::myCreatePublicSaveFile(const QString &FilenamePath)
{
    QFile file(FilenamePath);
    if(!file.exists())//文件不存在
    {
        qDebug()<<file.errorString()<<endl;
        return false;
    }
    //打开文件:只读,识别\n符
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
        return false;//文件打开失败
    QTextStream fileCtrl(&file);
    fileCtrl.setAutoDetectUnicode(true);//自动检测Unicode才能显示汉字
    QString getText = ui->plainTextEdit->toPlainText();//获取整个内容
    fileCtrl<<getText;//写入文本流
    file.close();//关闭文件
    return true;
}

打开一个文件,显示文件内容
Qt文件读写的天花板QFile和QTextStream搭配第二集_第2张图片


Qt文件读写的天花板QFile和QTextStream搭配第二集_第3张图片


Qt文件读写的天花板QFile和QTextStream搭配第二集_第4张图片
记得锁定专栏,一直更新哦
Qt文件读写的天花板QFile和QTextStream搭配第二集_第5张图片

你可能感兴趣的:(QT,界面开发工程师课程,qt,ui,开发语言,QFile,QTextStream)