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();
                   }
               }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值