QT4.7_QFileDialog 以及 QFile 应用 文件读写保存功能

第一次接触QT,但是以前学过C#也算上手比较容易了,都是控件的操作。

但第一次写还是出现了很多很纠结的问题,可能本人比较笨吧


这个界面实现的就是按一个BUTTON键打开文档,并且显示其内容到TextEdit上,按另一个BUTTON键则实现另存为功能,即把 TextEdit上的内容写到新建的或者已有的文件里,并且覆盖原有文件的内容。


注意 :Qt 不同版本可能写法不同,要自己查阅手册哦,不过 4.7这个版本的我貌似没找到中文版的

#include "my.h"
#include "ui_my.h"
#include "qfile.h"
#include "qfiledialog.h"
#include <QtDebug>    //自己调试用的,在QT4.7这个版本 要使用这个

my::my(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::my)
{
    ui->setupUi(this);
}

my::~my()
{
    delete ui;
}

//文件的另存为功能,和下面的打开文件类似,下面给了注释的这里就不多说了

void my::on_pushButton_clicked()
{
    QFileDialog textsave(this,"save");
    textsave.setAcceptMode(QFileDialog::AcceptSave); // 关于 这条语句,我之前查阅手册的时候看见的是他给OpenFile写的,默认值为0,
                                                     //所以手册里就没有定义,如果你要使用Save的话就自行定义一下吧
    textsave.setFileMode(QFileDialog::AnyFile);
    textsave.setViewMode(QFileDialog::Detail);
    QStringList qt;
    if(textsave.exec())
    {
        qt = textsave.selectedFiles();
    }
    QFile file(qt.at(0));
    file.open(QIODevice::WriteOnly);
    QTextStream ts(&file);
    ts << ui->textEdit->toPlainText();//读取TextEdit的 内容 之前有看见其他版本用text();
                                      //但在这里我找了好久只找到这个;
    ui->textEdit->clear();
}

void my::on_pushButton_2_clicked()
{
    //文件目录显示  QFileDialog只是其中一种 还可以使用QDir等
    QFileDialog dialog(this,"open");
    dialog.setFileMode(QFileDialog::AnyFile);//可设置不存在的文件,如果要选择存在的用Existing
    dialog.setNameFilter(tr("Text files (*.txt);;Images (*.png *.xpm *.jpg);;
                            All C++ files (*.cpp *.cc *.C *.cxx *.c++);;O wenjian(*.o)"));
                            //过滤器,不设置则显示所有
    dialog.setViewMode(QFileDialog::Detail);//Detail详细,list简单列出。
    QStringList fd;
    if(dialog.exec()) //弹出对话框
    fd = dialog.selectedFiles();
    qDebug()<<fd;


    //文件内容显示
    QFile hello(fd.at(0));//把QSringList 转成 String
    hello.open(QIODevice::ReadOnly| QIODevice::Text);//QIODevice类是输入/输出设备的基类
    QTextStream myStream(&hello);   //QTextStream类提供了使用QIODevice读写文本的基本功能
    QString str ;
    while(myStream.atEnd()==0)
    {
        str = myStream.readLine();
        ui->textEdit->append(str);  //Append()附加,还可以有很多方式 可以自己查询手册。
                                    //例如用SetText()的话会覆盖掉原来的
    }
    qDebug()<<str;
    hello.close();


}


以上写的只是QFileDialog的其中一种写法,手册里提供了两种

还有一种静态函数的方法

 fileName = QFileDialog::getOpenFileName(this,
     tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
看上去更简洁,只是我比较执着于这个而已。。

猜你喜欢

转载自blog.csdn.net/blackholeAC/article/details/6939722