Qt文件对话框QFileDialog之把已存在的文件进行另存为操作

一、文件对话框

     文件对话框QFileDialog类提供了一个允许用户选择文件或者文件夹的对话框。

二、文件打开对话框

    方式一:使用静态函数QFileDialog::getOpenFileName()

QString fileName = QFileDialog::getOpenFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*png *jpg)"));

  这里使用QFileDialog类中的getOpenFileName()来获取选择的文件名,这个函数会以模态方式运行一个文件对话框。   他的四个参数的作用分别是: 指定父窗口、设置对话框标题、默认文件打开路径、设置文件类型过滤器。  如果不指定文件过滤器,则默认选择所有类型的文件。

如果要设置多个不同类别的过滤器,则要用“;;”隔开。

QString fileName = QFileDialog::getOpenFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*.png *.jpg);;文本文件(*txt)"));

 要同时选择多个文件可以使用getOpenFileNames()函数。

方式二:创建QFileDialog对象来实现

QFileDialog * filedialog = new QFileDialog(this);//创建文件对话框对象,父对象为this
filedialog->setWindowTitle("Save");//设置对话框标题
filedialog->setAcceptMode(QFileDialog::AcceptOpen);//设置对话框为打开模式
filedialog->setFileMode(QFlifeDialog::AnyFile);//设置文件对话框的模式
filedialog->setViewMode(QFileDialog::Detail);//设置文件视图模式为详细模式
filedialog->selectFile("data.txt");//设置初始选中的文件为“data.txt”
filedialog->setFilter("*.csv;;*txt;;*.*");//设置文件过滤器
filedialog->selectNameFilter("*.csv");//设置初始选择的文件类型
if (openDialog.exec() == QFileDialog::AcceptOpen) {
       QString openFile = openDialog.selectedFiles().first();//打开文件的路径(包含文件名)
       QString openPath = openDialog.directory().path();//打开文件的路径
    }

三、把已存在的文件进行另存为操作

  方式一:使用静态函数QFileDialog::getSaveFileName()

QString fileName = QFileDialog::getSaveFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*png *jpg)"));

  方式二:创建QFileDialog对象来实现

QFileDialog * filedialog = new QFileDialog(this);//创建文件对话框对象,父对象为this
filedialog->setWindowTitle("Save");//设置对话框标题
filedialog->setAcceptMode(QFileDialog::AcceptSave);//设置对话框为打开模式
filedialog->setFileMode(QFlifeDialog::AnyFile);//设置文件对话框的模式
filedialog->setViewMode(QFileDialog::Detail);//设置文件视图模式为详细模式
filedialog->selectFile("data.txt");//设置初始选中的文件为“data.txt”
filedialog->setFilter("*.csv;;*txt;;*.*");//设置文件过滤器
filedialog->selectNameFilter("*.csv");//设置初始选择的文件类型
if (openDialog.exec() == QFileDialog::AcceptSave) {
       QString path = filedialog->selectedFiles()[0];
               QFile file(path);
               if (file.open(QIODevice::WriteOnly | QIODevice::Text))
               {
                   QString filePathToRead = "test.txt";//已存在的文件test.txt
                   QFile readFile(filePathToRead);
                   if (readFile.open(QIODevice::ReadOnly | QIODevice::Text))
                   {
                       QTextStream in(&readFile);
                       QTextStream out(&file);
                       out << in.readAll();
                       readFile.close();
                       file.close();
                   }
               }
    }

你可能感兴趣的:(qt)