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

来源:互联网 发布:计算机二级编程 编辑:程序博客网 时间:2024/04/30 22:36

第一次接触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)"));
看上去更简洁,只是我比较执着于这个而已。。