QFile类,以及利用QFile进行最基本的text文件打开与保存

在qt中,操作现存文件的流程:

一:QFileDialog   利用这个类可以通过对话框获得文件的目录  QFileDialog::getOpenFileName()

二:QFile       利用这个类,我们可以打开文件

三 :QTextStream  这是一个txt流,用于读写文件

具体类的代码展示

一:QfileDialog

 QString path=QFileDialog::getOpenFileName(this,tr("open File"),".",tr("Text Files(*.txt)"));   // 获得文件的地址

二:QFile

  QFile file(path); //  创建文件类 file

三:

 QTextStream in(&file);// 将文件file类 注入in 流中
 textEdit->setText(in.readAll());// 将txt流in 中的内容转送给TextEdit

主要细节代码展示

    //下面是添加动作的代码,将动作进行绑定,进而进行下一步的操作

    // 打开文件的动作    
    openAction = new QAction(QIcon(":/images/file-open"), tr("&Open..."), this);
    openAction->setShortcuts(QKeySequence::Open);
    openAction->setStatusTip(tr("Open an existing file"));
     //保存文件的动作
    saveAction = new QAction(QIcon(":/images/file-save"), tr("&Save..."), this);
    saveAction->setShortcuts(QKeySequence::Save);
    saveAction->setStatusTip(tr("Save a new file"));


    //将动作添加到菜单栏上
    QMenu *file = menuBar()->addMenu(tr("&File"));
    file->addAction(openAction);
    file->addAction(saveAction);
    //将动作添加到工具栏上
    QToolBar *toolBar = addToolBar(tr("&File"));
    toolBar->addAction(openAction);
    toolBar->addAction(saveAction);

    textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);
///
//对动作与方法进行绑定
connect(openAction, &QAction::triggered, this, &MainWindow::openFile);
connect(saveAction, &QAction::triggered, this, &MainWindow::saveFile);

///
//动作绑定的方法的具体实现
    void MainWindow::openFile()
    {
        QString path = QFileDialog::getOpenFileName(this,
                                                    tr("Open File"),
                                                    ".",
                                                    tr("Text Files(*.txt)"));
//从QDialog对话框,获得文件的地址目录
        if(!path.isEmpty()) {//判断文件地址是否为空
            QFile file(path);   //创建文件类
            if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {//判断文件是否可执行
                QMessageBox::warning(this, tr("Read File"),
                                     tr("Cannot open file:\n%1").arg(path));
                return;
            }
            QTextStream in(&file);//创建text流
            textEdit->setText(in.readAll()); //将流中的内容输出到textEdit
            file.close();
        } else {
            QMessageBox::warning(this, tr("Path"),
                                 tr("You did not select any file."));
        }
    }



//保存文件的方法

    void MainWindow::saveFile()
    {
        QString path = QFileDialog::getSaveFileName(this,
                                                    tr("Open File"),
                                                    ".",
                                                    tr("Text Files(*.txt)"));
        if(!path.isEmpty()) {
            QFile file(path);
            if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
                QMessageBox::warning(this, tr("Write File"),
                                           tr("Cannot open file:\n%1").arg(path));
                return;
            }
            QTextStream out(&file);
            out << textEdit->toPlainText();
            file.close();
        } else {
            QMessageBox::warning(this, tr("Path"),
                                 tr("You did not select any file."));
        }
    }

 

在结尾,要着重讲一个类方法:getOpenFileName

    QString getOpenFileName(QWidget * parent = 0,
                            const QString & caption = QString(),
                            const QString & dir = QString(),
                            const QString & filter = QString(),
                            QString * selectedFilter = 0,
                            Options options = 0)
/*
parent:父窗口。我们前面介绍过,Qt 的标准对话框提供静态函数,用于返回一个模态对话框
caption:对话框标题;
dir:对话框打开时的默认目录,“.” 代表程序运行目录,“/” 代表当前盘符的根目录(特指 Windows 平台;Linux 平台当然就是根目录),这个参数也可以是平台相关的,比如“C:\\”等;
    filter:过滤器。我们使用文件对话框可以浏览很多类型的文件,但是,很多时候我们仅希望打开特定类型的文件。比如,文本编辑器希望打开文本文件,图片浏览器希望打开图片文件。过滤器就是用于过滤特定的后缀名。如果我们使用“Image Files(*.jpg *.png)”,则只能显示后缀名是 jpg 或者 png 的文件。如果需要多个过滤器,使用“;;”分割,比如“JPEG Files(*.jpg);;PNG Files(*.png)”;

selectedFilter:默认选择的过滤器;
options:对话框的一些参数设定,比如只显示文件夹等等,它的取值是 enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。
*/

 

这节主要学到两个知识点:

一:如何根据QFileDialog对话框打开文件对应的文件

二:怎样填写QFile文件内容并且保存

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值