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文件内容并且保存

 

 

你可能感兴趣的:(qt)