zoukankan      html  css  js  c++  java
  • Qt获取选择的文件夹和文件路径

    获取文件夹路径
    static QString getExistingDirectory(QWidget *parent = Q_NULLPTR,
                                        const QString &caption = QString(),
                                        const QString &dir = QString(),
                                        Options options = ShowDirsOnly);
    参数1:父窗口
    参数2:弹出界面的菜单栏文字 
    参数3:打开的初始目录 比如“/”表示根目录
    
    

    使用方法

    void Widget::on_openSrcDirPushButton_clicked()
    {
        //文件夹路径
        srcDirPath = QFileDialog::getExistingDirectory(
                   this, "choose src Directory",
                    "/");
    
        if (srcDirPath.isEmpty())
        {
            return;
        }
        else
        {
            qDebug() << "srcDirPath=" << srcDirPath;
            srcDirPath += "/";
        }
    }
    
    

    注意:
    qDebug() << "srcDirPath=" << srcDirPath;输入我们打开目录的路径,比如:/mnt/hgfs,这时候如果我们要读取这个目录下的文件,此时路径应为这里写代码片/mnt/hgfs/然后加上文件名才是文件的全路径。不过或许大家用不到srcDirPath += “/”;`这一句。

    获取文件路径(选择文件):

    获取文件路径使用getOpenFileName即可。使用方法和getExistingDirectory类似。

    static QString getOpenFileName(QWidget *parent = Q_NULLPTR,
                                   const QString &caption = QString(),
                                   const QString &dir = QString(),
                                   const QString &filter = QString(),
                                   QString *selectedFilter = Q_NULLPTR,
                                   Options options = Options());
    参数1:父窗口
    参数2:弹出界面的菜单栏文字 
    参数3:打开的初始目录 比如“/”表示根目录  
    参数4:设置打开的文件类型   
    参数5:看代码。。。
    

    使用方法:

    void Widget::slotBtnClick()
    {
        QString s = QFileDialog::getOpenFileName(
                    this, "选择要播放的文件",
                    "/",
                    "视频文件 (*.flv *.rmvb *.avi *.mp4);; 所有文件 (*.*);; ");
        qDebug() << "path=" << s;
        if (!s.isEmpty())
        {
    
        }
    }
    

    另外的方法:

    QString file_full, file_name, file_path;  
    QFileInfo fi;  
      
    file_full = QFileDialog::getOpenFileName(this);  
      
    fi = QFileInfo(file_full);  
    file_name = fi.fileName();  
    file_path = fi.absolutePath();
    
    void monizhuzhan::filenameInDir()
    {
        //判断路径是否存在
        QDir dir(path);
        if(!dir.exists())
            return;
     
        //查看路径中后缀为.cfg格式的文件
        QStringList filters;
        filters<<QString("*.cfg");
        dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
        dir.setNameFilters(filters);  //设置文件名称过滤器,只为filters格式
     
        //统计cfg格式的文件个数
        int dir_count = dir.count();
        if(dir_count <= 0)
            return;
     
    //  //测试
    //  //文件路径及名称
    //  QFile outFile( "filename.txt");
    //  //看能否打开
    //  if(!outFile.open(QIODevice::WriteOnly | QIODevice::Append))  
    //      return ;  
    //  QTextStream ts(&outFile);
     
        //存储文件名称
        QStringList string_list;
        for(int i=0; i<dir_count; i++)
        {
            QString file_name = dir[i];  //文件名称
            //ts<<file_name<<"
    "<<"
    ";
            string_list.append(file_name);
        }
     
    }
    

    其中注释部分可实现将文件名称存入到txt中。

    总体思路:得到路径--去除路径下的无效文件--统计个数--获取文件名称

    【更多参考】

  • 相关阅读:
    Oracle 查询语句截取字符串
    删除ORACLE数据库中重复的数据
    [易学C#]C#3.0语言新特性之匿名类型
    [讨论]程序之路在何方?
    [易学C#]C#3.0语言新特性之扩展方法
    [易学C#]C#3.0语言新特性之对象和集合初始化器
    用C#解决Oracle9i和Oracle10g字符集不兼容的问题
    一个C#操作Oracle的通用类
    [易学C#]C#3.0语言新特性之隐式类型
    重拾 DirectX 一:配置Visual Studio 2008+Microsoft DirectX SDK (June 2008) 开发环境
  • 原文地址:https://www.cnblogs.com/ZY-Dream/p/10632890.html
Copyright © 2011-2022 走看看