QT 选择文件,另存为文件组件

1.  ChildFile.h

#ifndef CHILDFILE_H
#define CHILDFILE_H

#include <QWidget>
//#include <QtCore/QStringList>

/*
 文件打开,另存,读取
*/
class ChildFile
{
public:
    ChildFile(QWidget *parent);
    ~ChildFile();
    QString FileSelect();
    QString FileSaveAs(QStringList content);
private:
    QWidget *window= nullptr;//父窗口  上下文

};

#endif // CHILDFILE_H
2.ChildFile.cpp
#include "childfile.h"
#include <QWidget>

#include <QFile>
#include <QDesktopServices>
#include <QUrl>
#include <QDebug>
#include <QFileDialog>
#include <QApplication>
#include <QMainWindow>
#include "QtWidgets"

ChildFile::ChildFile(QWidget *parent)
{
 this->window=parent;
}

/*文件 选择+读取,返回字符串*/
QString ChildFile::FileSelect()
{
 QString reStr="";
    QString fileName = QFileDialog ::getOpenFileName(this->window,this->window->tr("选择文件"),"./",this->window->tr("json files(*.json *.txt,*.md);;All files (*.*)"));
    if(fileName.isEmpty())
    {
        QMessageBox mesg;
        mesg.warning(this->window,"警告","打开文件失败");
        return "";
    }
    else
    {
        QString line;
        QTextCodec * code =QTextCodec::codecForLocale();
        QFile file(fileName);
        file.open(QIODevice::ReadOnly);//IO_ReadOnly
        QTextStream stream(&file);
        stream.setCodec(code);
        while (stream.atEnd()==0)
        {
           line=stream.readAll();
        }
        QMessageBox alert;
        alert.warning(this->window,"提示","读取完成");
        reStr=line;
        return  reStr;
    }
}
/*
文件另存为
*/
QString ChildFile::FileSaveAs(QStringList content)
{
    QString reStr="";
    QStringList destinContent;
    destinContent=content;

    QString filePath;
    QDateTime time=QDateTime::currentDateTime();
    QString timeHead=time.toString("yyyyMMddHHmmss");
    int randNumber= rand()*100;
    QString destinFileName;
    destinFileName=timeHead+"_"+QString::number(randNumber)+"_"+"dltc.json";
    filePath=QFileDialog::getSaveFileName(this->window,this->window->tr("另存为"),destinFileName,this->window->tr("dltc(*.json)"));
   // reStr=destinFileName+".json";//返回文件全路径+文件名
    reStr=destinFileName;//返回文件全路径+文件名
    if(!filePath.isNull())
    {
         QFile file(filePath);
        if(file.open(QIODevice::WriteOnly))
        {
            QTextStream stream(&file);
            for(QStringList::Iterator it = destinContent.begin();it !=destinContent.end();++it)
                stream <<*it <<"\n";
            file.close();

        }
     QMessageBox::information(this->window,"信息","保存成功");
    }
    else
    {
         QMessageBox::information(this->window,"信息","保存失败,您取消了保存");

    }

    return  reStr;
}

3.mainwindow 中调用

   3.1 头部引用  

#include "childtarget.h"

 3.2 调用代码

       a.选择文件

 ChildFile * childfile =new ChildFile(this->window); //重点说明 此处 如果是在mainwindow 中直接定this,重点是要将文件弹出窗口父窗口的指针传入
   QString content= childfile->FileSelect();
   // childfile->~ChildFile();
   //ui->textBrowsercontent->setText(content);
  // QMessageBox::information(this,"单独插件-文件选取","文件选择结束");
   return  content;

    b.另存为

      

QStringList destinContent;
    destinContent.append(content);
   // destinContent<<ui->textBrowsercontent->toPlainText();
    ChildFile *childfile =new ChildFile(this->window);//重点说明,此处如果是Mainwidnow 应当是this,总之要将另存为父窗体的指针传入
   QString reStr= childfile->FileSaveAs(destinContent);
  // QMessageBox::information(this,"单独插件-文件另存为","创建成功,文件名:"+reStr);
   return  reStr;

如果实在是太懒可以下载源码Demo:

QT文件选择,文件另存为,打开文件夹调试可用的demo包括单独模块类-C++文档类资源-CSDN下载

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值