• Qt文件选择复制另存为


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

    https://www.cnblogs.com/bclshuai/p/11380657.html

    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);//从源路径将文件复制到目标路径
        }
    }
    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html
  • 相关阅读:
    R语言 dbWriteTable 写入数据库 为空和乱码问题
    data.table进阶
    简述ODS,和数据仓库做简单的比较
    深入ff and ffbase
    R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)
    基于mondrain 的原理纠正特殊指标值
    基于mondrian聚合表的R计算olap开发
    dplyr快速入门
    R中的data.table 快速上手入门
    删除pentaho用户和用户文件夹
  • 原文地址:https://www.cnblogs.com/bclshuai/p/15725002.html
Copyright © 2020-2023  润新知