Qt文件选择复制另存为

自己开发了一个股票软件,功能很强大,需要的点击下面的链接获取:

自研股票智能分析报警软件更新链接 - 一字千金 - 博客园

QT文件选择复制和另存为

目录

1       选择文件... 1

2       另存为... 2

1         选择文件

从电脑选择文件到程序中进行处理,可以设置文件的路径

函数名称

static QStringList getOpenFileNames(QWidget *parent = Q_NULLPTR,

const QString &caption = QString(),//窗口名称

const QString &dir = QString(),//文件夹路径

const QString &filter = QString(),//选择类型过滤器

QString *selectedFilter = Q_NULLPTR,

Options options = Options());

示例

QStringList fileNameList = QFileDialog::getOpenFileNames(this, tr("添加图片"), m_strDefaultPicPath, tr("Images(*.png *.jpeg *.jpg *.bmp *.tif *.tiff *.PNG *.JPEG *.JPG *.BMP *.TIF *.TIFF)"));

 

2         另存为

将程序中展示的本地图片另存为到另外一个路径下。应用场景,例如我将视频中的人脸截图都显示在程序界面,需要选择其中嫌疑犯的图片然后保存到另外一个文件夹作为档案存储起来。如下图所示

 

实现实例

(1)    选择要保存的路径

//选择保存的文件路径

    QFileDialog fileDialog;

    QString strTargetFile = fileDialog.getExistingDirectory(this, tr("选择保存路径"), m_strDefaultPicPath);

    QDir dir(strTargetFile);

    if (!dir.exists())

    {

        SlotError(-1, "请选择需要保存文件夹路径");

        return-1;

    }

(2)用一个Qt线程类实现文件的复制

因为文件数量比较大时,复制文件比较耗时,用主线程复制文件会造成界面卡顿,所以采用线程的方式复制文件。

#ifndef COPYFILETHREAD_H
#define COPYFILETHREAD_H

#include <QThread>

class CopyFileThread : public QThread
{
    Q_OBJECT

public:
    CopyFileThread();
    ~CopyFileThread();
    int StartCopyFile(QStringList& listSourcefile,QString strTargetPath);
    void run();

private:
    QStringList m_listSourcefile;
    QString m_strTargetPath = "";
};

#endif // COPYFILETHREAD_H

源文件

#include "CopyFileThread.h"
#include<QFileInfo>
CopyFileThread::CopyFileThread()
{

}

CopyFileThread::~CopyFileThread()
{

}

int CopyFileThread::StartCopyFile(QStringList & listSourcefile, QString strTargetPath)
{
    m_listSourcefile = listSourcefile;
    m_strTargetPath = strTargetPath;
    this->start();
    return 0;
}

void CopyFileThread::run()
{
    QString strSourcePath = "";
    QString strTargetPath = "";
    for (int i=0;i<m_listSourcefile.size();i++)
    {
        strSourcePath = m_listSourcefile[i];
        QFileInfo file(strSourcePath);
        if (!file.exists())
        {
            continue;
        }
        strTargetPath = m_strTargetPath + "/"  + file.fileName();
        QFile::copy(strSourcePath, strTargetPath);//从源路径将文件复制到目标路径
    }
}

  • 0
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

bclshuai

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值