精华内容
下载资源
问答
  • QDir

    2019-09-12 11:42:37
    1.获取目录下的所有文件名 QDir dir(path); QStringList tempfiles = dir.entryList(QStringList() << "*.AWX", QDir::Files, QDir::Name); 2.目录不存在,则创建目录 ...

    1.获取目录下的所有文件名

    QDir dir(path);
    QStringList tempfiles = dir.entryList(QStringList() << "*.AWX", QDir::Files, QDir::Name);

     

    2.目录不存在,则创建目录

    QDir dir(folder);
    if(!dir.exists())
        dir.mkpath(dir.absolutePath());
        

     

    转载于:https://my.oschina.net/u/3273849/blog/2252220

    展开全文
  • Qdir

    千次阅读 2018-07-09 09:47:45
    关于Qt操作文件夹、文件的知识用途较多,比如... 首先看简单的:一、Qt遍历文件夹下一层的文件:方式1:void ImageTree::addFolderImages(QString path){//判断路径是否存在QDir dir(path);if(!dir.exists()){retur...
    关于Qt操作文件夹、文件的知识用途较多,比如遍历下一层乃至所有子孙文件、文件夹,获取它们的一些信息(大小、类型、最后更改时间等)。当然,也可以进行级联删除。 首先看简单的:
    
    一、Qt遍历文件夹下一层的文件:
    方式1:
    void ImageTree::addFolderImages(QString path)
    {
    //判断路径是否存在
    QDir dir(path);
    if(!dir.exists())
    {
    return;
    }
    dir.setFilter(QDir::Files | QDir::NoSymLinks);
    QFileInfoList list = dir.entryInfoList();
    int file_count = list.count();
    if(file_count <= 0)
    {
    return;
    }
    QStringList string_list;
    for(int i=0; i
    {
    QFileInfo file_info = list.at(i);
    QString suffix = file_info.suffix();
    if(QString::compare(suffix, QString('png'), Qt::CaseInsensitive) == 0)
    {
    QString absolute_file_path = file_info.absoluteFilePath();
    string_list.append(absolute_file_path);
    }
    }
    }
    分析:遍历文件的下一层,对于系统而言包括:文件夹、文件、快捷方式,使用setFilter即可过滤。通过entryInfoList则可以获取过滤后所得到的文件夹下的文件信 息列表,遍历文件通过操作QFileInfo可得到所需的文件详细信息(大小、类型、后缀等)。
    方式2:
    void ImageTree::addFolderImages(QString path)
    {
    //判断路径是否存在
    QDir dir(path);
    if(!dir.exists())
    {
    return;
    }
    QStringList filters;
    filters<<QString('*.jpeg')<<QString('*.jpg')<<QString('*.png')<<QString('*.tiff')<<QString('*.gif')<<QString('*.bmp');
    dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
    dir.setNameFilters(filters); //设置文件名称过滤器,只为filters格式(后缀为.jpeg等图片格式)
    int dir_count = dir.count();
    if(dir_count <= 0)
    {
    return;
    }
    QStringList string_list;
    //获取分隔符
    //QChar separator = QDir::separator();
    QChar separator = QChar('/');
    if(!path.contains(separator))
    {
    separator = QChar('\\');
    }
    QChar last_char = path.at(path.length()-1);
    if(last_char == separator)
    {
    separator = QChar();
    }
    for(uint i=0; i
    {
    QString file_name = dir[i]; //文件名称
    QString file_path = path + separator + file_name; //文件全路径
    string_list.append(file_path);
    }
    //string_list 添加完成之后,就可以查看list中的文件路径了
    }
    分析:setNameFilters顾名思义,就是过滤文件名称的。如果只需要获取指定路径下的文件名,则可去掉“获取分隔符”部分代码(因为我是为了获取文件的全路径)。
    思考:QDir::separator()这是用于获取分隔符的,调试过程中发现path的分隔符为'/',奇怪的是获取到的为'\\',刚好相反,所以我通过contains的方式获取分隔符的(无非'/'与'\\')。
    讨论:如果设定filters后,那么存在一定的问题。熟用Windows的应该都知道,文件名是忽略大小写的(包括扩展名),那么若filters设定了“*.jpg”之后,则就不可添加扩展名为“.JPG”、“.Jpg”等大小写兼有的文件了。
    既然有问题,就有解决问题的方式。
    1、问题来源是由扩展名引起,那么去掉setNameFilters(filters);
    2、上述已经获取文件全路径,那么QFileInfo file_info(file_path)获取文件信息的对象
    3、通过file_info.suffix()或者completeSuffix()来判定文件的后缀、扩展名
    4、获取之后比较时忽略大小写即可。如:QString::compare(suffix, QString('*.jpeg'), Qt::CaseInsensitive) == 0
    总结:通过以上两种方式比较,关于遍历下一层的方式,采用“方式1”较好。
    二、级联遍历文件夹及其子孙文件夹中的文件
    方式1:
    void ImageTree::addSubFolderImages(QString path)
    {
    //判断路径是否存在
    QDir dir(path);
    if(!dir.exists())
    {
    return;
    }
    //获取所选文件类型过滤器
    QStringList filters;
    filters<<QString('*.jpeg')<<QString('*.jpg')<<QString('*.png')<<QString('*.tiff')<<QString('*.gif')<<QString('*.bmp');
    //定义迭代器并设置过滤器
    QDirIterator dir_iterator(path,
    filters,
    QDir::Files | QDir::NoSymLinks,
    QDirIterator::Subdirectories);
    QStringList string_list;
    while(dir_iterator.hasNext())
    {
    dir_iterator.next();
    QFileInfo file_info = dir_iterator.fileInfo();
    QString absolute_file_path = file_info.absoluteFilePath();
    string_list.append(file_path);
    }
    }
    分析:QDirIterator定义过程中可设置过滤器,包括:文件名称、文件类型等。dir_iterator.next()这句话很重要,如果缺少将会进入死循环!
    方式2:
    QStringList string_list;
    void ImageTree::addSubFolderImages(QString path)
    {
    QDir dir(path);
    if(!dir.exists())
    {
    return;
    }
    dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoSymLinks);
    dir.setSorting(QDir::DirsFirst);
    QFileInfoList list = dir.entryInfoList();
    int i = 0;
    bool is_dir;
    do
    {
    QFileInfo file_info = list.at(i);
    if(file_info.fileName() == '.' | file_info.fileName() == '..')
    {
    i++;
    continue;
    }
    is_dir = file_info.isDir();
    if(is_dir)
    {
    //进行递归
    addSubFolderImages(file_info.filePath());
    }
    else
    {
    //获取文件后缀并获取所选包含类型,若存在包含类型且后缀相同,则添加
    QString suffix = file_info.suffix();
    if(QString::compare(suffix, QString('png'), Qt::CaseInsensitive) == 0)
    {
    QString absolute_file_path = file_info.absoluteFilePath();
    string_list.append(absolute_file_path);
    }
    }
    i++;
    }
    while(i
    }
    分析:此方式采用递归的思路解决,也是网上大多数人用的办法,个人建议摒弃!递归的效率真心不敢接受,而且代码看起来也费劲。
    总结:通过以上两种方式比较,关于遍历子孙文件夹的方式,采用“方式1”较好。
    关于QFileInfo获取文件信息的方法可以查看API
    方法如下:
    void setFile(const QString &file);
    void setFile(const QFile &file);
    void setFile(const QDir &dir, const QString &file);
    bool exists() const;
    void refresh();
    QString filePath() const;
    QString absoluteFilePath() const;
    QString canonicalFilePath() const;
    QString fileName() const;
    QString baseName() const;
    QString completeBaseName() const;
    QString suffix() const;
    QString bundleName() const;
    QString completeSuffix() const;
    QString path() const;
    QString absolutePath() const;
    QString canonicalPath() const;
    QDir dir() const;
    QDir absoluteDir() const;
    bool isReadable() const;
    bool isWritable() const;
    bool isExecutable() const;
    bool isHidden() const;
    bool isNativePath() const;
    bool isRelative() const;
    inline bool isAbsolute() const { return !isRelative(); }
    bool makeAbsolute();
    bool isFile() const;
    bool isDir() const;
    bool isSymLink() const;
    bool isRoot() const;
    bool isBundle() const;
    QString readLink() const;
    inline QString symLinkTarget() const { return readLink(); }
    QString owner() const;
    uint ownerId() const;
    QString group() const;
    uint groupId() const;
    bool permission(QFile::Permissions permissions) const;
    QFile::Permissions permissions() const;
    qint64 size() const;
    QDateTime created() const;
    QDateTime lastModified() const;
    QDateTime lastRead() const;
    bool caching() const;
    void setCaching(bool on);
    更多关于获取文件图标、类型的详细信息请查看:
    Qt之QFileIconProvider(获取文件图标、类型)。 Qt之QFileIconProvider续(获取文件图标、类型)
    展开全文
  • QDir 免安装

    2018-09-14 15:01:51
    Qdir 支持多个窗口的小工具,解压可用 不用安装,解压可以
  • QT QDir

    2021-07-10 15:18:09
    QDir类提供了对目录结构及其内容的访问。 QDir用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它也可以用来访问Qt的资源系统。 Qt使用"/"作为通用的目录分隔符,就像在url中使用"/"作为路径分隔...

    QDir类提供了对目录结构及其内容的访问。

    QDir用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它也可以用来访问Qt的资源系统。

    Qt使用"/"作为通用的目录分隔符,就像在url中使用"/"作为路径分隔符一样。如果您总是使用“/”作为目录分隔符,Qt将转换您的路径以符合底层操作系统。

    QDir可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开始(在Windows下,可选前面是驱动器规范)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

    绝对路径示例:

    QDir("/home/user/Documents")
    QDir("C:/Documents and Settings")


    在Windows上,上面的第二个示例用于访问文件时将被转换为C:\Documents and Settings。

    相对路径示例:

    QDir("images/landscape.png")


    您可以使用isRelative()或isAbsolute()函数来检查QDir是使用相对文件路径还是绝对文件路径。调用makeAbsolute()将相对QDir转换为绝对QDir。

    导航和目录操作

    可以使用path()函数获取目录的路径,并使用setPath()函数设置新的路径。一个目录的绝对路径可以通过调用absolutePath()来找到。

    目录的名称可以使用dirName()函数找到。这通常返回绝对路径中指定目录位置的最后一个元素。然而,如果QDir表示当前目录,它也可以返回"."。

    QDir("Documents/Letters/Applications").dirName() // "Applications"
    QDir().dirName()                                 // "."


    目录的路径也可以用cd()和cdUp()函数更改,它们的操作方式类似于熟悉的shell命令。当使用现有目录的名称调用cd()时,QDir对象更改目录,以代替它表示该目录。cdUp()函数改变QDir对象的目录,使其引用其父目录;即cd("..")相当于cdUp()。

    可以使用mkdir()创建目录,使用rename()重命名目录,使用rmdir()删除目录。

    您可以使用exists()来测试给定名称的目录是否存在,并且可以使用isReadable()、isAbsolute()、isRelative()和isRoot()来测试目录的属性。

    refresh()函数从磁盘重新读取目录数据。

    文件和目录内容

    目录包含许多表示文件、目录和符号链接的条目。目录中的条目数由count()返回。一个目录中所有条目的名字的字符串列表可以通过entryList()获得。如果您需要关于每个条目的信息,请使用entryInfoList()来获取QFileInfo对象列表。

    目录中的文件和目录的路径可以使用filePath()和absoluteFilePath()构造。函数的作用是:返回指定文件或目录相对于QDir对象的路径;absoluteFilePath()返回指定文件或目录的绝对路径。这两个函数都不检查文件或目录是否存在;它们只建造路径。

    QDir directory("Documents/Letters");
    QString path = directory.filePath("contents.txt");
    QString absolutePath = directory.absoluteFilePath("contents.txt");


    可以使用remove()函数来删除文件。目录不能像文件一样被删除;使用rmdir()来删除它们。

    通过对QDir对象应用过滤器,可以减少entryList()和entryInfoList()返回的条目的数量。您可以应用名称筛选器来指定带有通配符的模式,文件名需要匹配,属性筛选器可以选择条目的属性,并可以区分文件和目录,以及排序顺序。

    名称过滤器是传递给setNameFilters()的字符串列表。属性过滤器由按位或组合的过滤器组成,在调用setFilter()时指定这些过滤器。排序顺序是使用setSorting()和SortFlags的位OR组合来指定的。

    您可以使用match()函数来测试文件名是否与过滤器匹配。

    在调用entryList()和entryInfoList()时也可以指定过滤器和排序顺序标志,以覆盖之前定义的行为。

    当前目录和其他特殊路径

    通过许多返回QDir对象的静态函数提供了对一些常见目录的访问。也有相应的返回字符串的函数:

    QDirQStringReturn Value
    current()currentPath()The application's working directory
    home()homePath()The user's home directory
    root()rootPath()The root directory
    temp()tempPath()The system's temporary directory

    静态函数setCurrent()也可以用来设置应用程序的工作目录。

    如果你想找到包含应用程序可执行文件的目录,请参见QCoreApplication::applicationDirPath()。

    静态函数提供了包含文件系统的每个设备的根目录列表。在Unix系统上,这将返回一个包含单个根目录"/"的列表;在Windows上,列表通常包含C:/,可能还有其他的驱动器号,如D:/,这取决于用户的系统配置。

    路径操作和字符串

    包含“。”元素(在路径的该点引用当前目录)、“..”元素(引用父目录)和符号链接的路径可以使用canonicalPath()函数简化为规范形式。

    路径也可以通过使用cleanPath()来删除冗余的"/"和".."元素来简化。

    有时需要能够以用户平台的本机表示形式显示路径。静态toNativeSeparators()函数返回指定路径的副本,其中每个目录分隔符都被底层操作系统的适当分隔符替换。

    例子

    检查目录是否存在:

    QDir dir("example");
    if (!dir.exists())
        qWarning("Cannot find the example directory");

    (我们也可以使用静态便利函数QFile::exists())

    遍历目录并读取文件:

    QDir dir = QDir::root();                 // "/"
    if (!dir.cd("tmp")) {                    // "/tmp"
        qWarning("Cannot find the \"/tmp\" directory");
    } else {
        QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
        if (!file.open(QIODevice::ReadWrite))
            qWarning("Cannot create the file %s", file.name());
    }

    列出当前目录中所有文件(不包括符号链接)的程序,按大小排序,最小的优先:

    #include <QDir>
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication app(argc, argv);
        QDir dir;
        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
        dir.setSorting(QDir::Size | QDir::Reversed);
    
        QFileInfoList list = dir.entryInfoList();
        std::cout << "     Bytes Filename" << std::endl;
        for (int i = 0; i < list.size(); ++i) {
            QFileInfo fileInfo = list.at(i);
            std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                    .arg(fileInfo.fileName()));
            std::cout << std::endl;
        }
        return 0;
    }

    参见QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath()和Find Files Example。

    展开全文
  • QDir示例

    2021-04-25 21:52:27
    QDir Qt中对目录遍历的支持是比较好的,比如QDir、QFileInfo、QFile等。 在Qt助手中可以查到有关QDir的用法,如下图所示: 下面是我本人测试的一些关于QDir类的测试代码: #include <QCoreApplication> #...

    QDir

    Qt中对目录遍历的支持是比较好的,比如QDir、QFileInfo、QFile等。
    在Qt助手中可以查到有关QDir的用法,如下图所示:
    QDir
    下面是我本人测试的一些关于QDir类的测试代码:

    #include <QCoreApplication>
    #include <QDir>
    #include <QFileInfo>
    #include <QDebug>
    #include <QString>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        qDebug() << "the directory of application's executable" << QCoreApplication::applicationDirPath() << endl;
    
        QDir dir("D:/env/aaa");
        if (!dir.exists())
        {
            qWarning("Cannot find the D:/env directory");
        } else {
            qDebug() << "D/env exists" << endl;
        }
    
        QDir mDir;
    
        foreach(QFileInfo mFileInfoItem, mDir.drives())
        {
            qDebug() << mFileInfoItem.absoluteFilePath() << endl;
        }
    
        QDir myDir;
        QString mPath = "E:/Test/ZZZ";
    
        if (!myDir.exists(mPath))
        {
            myDir.mkpath(mPath);
            qDebug () << mPath << " Created!" << endl;
        }
        else {
            qDebug() << mPath << " Already exists" << endl;
        }
    
        QDir dDir("E:/SoftDevelop/CPlus/QtProjects/Qt5Samples/MyQtDemos");
    
        foreach(QFileInfo mItem, dDir.entryInfoList())
        {
            if (mItem.isDir())
            {
                qDebug() << "Dir: " << mItem.absoluteFilePath() << endl;
            }
            if (mItem.isFile())
            {
                qDebug() << "File: " << mItem.absoluteFilePath() << endl;
            }
        }
    
        return a.exec();
    }
    

    下面是Qt官方帮助文档提供的关于QtDir的一个完整示例代码:

    // A program that lists all the files in the current directory (excluding symbolic links), sorted by size, smallest first:
    
      #include <QDir>
      #include <iostream>
    
      int main(int argc, char *argv[])
      {
          QCoreApplication app(argc, argv);
          QDir dir;
          dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
          dir.setSorting(QDir::Size | QDir::Reversed);
    
          QFileInfoList list = dir.entryInfoList();
          std::cout << "     Bytes Filename" << std::endl;
          for (int i = 0; i < list.size(); ++i) {
              QFileInfo fileInfo = list.at(i);
              std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                      .arg(fileInfo.fileName()));
              std::cout << std::endl;
          }
          return 0;
      }
    
    展开全文
  • QDir_installer

    2018-11-29 17:59:20
    QDir提供了对目录结构和它们的内容的访问方式。QDir用来操作路径名,访问关于路径和文件的信息,操作基础的文件系统,还可以用来访问Qt的资源系统。 Qt使用"/"来作为通用的目录分隔符,这一点和在URLs中的路径分割...
  • QDir

    2020-02-13 14:56:36
    QDir Class TheQDirclass provides access to directory structures and their contents.More... Header: #include <QDir> qmake: QT += core List of all members, including inherited membe...
  • QDir文件操作

    2015-09-02 11:59:18
    在QT中使用QDir类实现界面文件操作 因随便写的 代码注释较少 如果能够给不熟悉的人带来一些便利 我很开心 ~-~
  • qdir_6.38.zip

    2019-08-16 11:46:58
    qdir桌面分屏多屏小工具无需安装直接打开可双2屏4屏8屏切换
  • QDir 5.0.2

    千次阅读 2014-12-26 13:20:34
    创建目录操作对象 定义时不初始化 默认对象为"." 即应用程序...QDir(const QDir &) QDir(const QString &) QDir(const QString &, const QString &, SortFlags, Filters) ~QDir() m_dir.setPath("abc");//对d重新赋值
  • Qt:QDir

    2021-04-13 10:52:47
    QDir类提供对目录结构及其内容的访问 头文件: #include<QDir> cmake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) qmake: QT += core 详细说明 ...
  • Qt之QDir

    2020-04-11 17:50:41
    利用QDir,我们可以获取目录结构和它们的内容。 QDir被用来操作路径,并获取和该路径有关的信息。QDir也可以被用来处理Qt的资源系统。 Qt使用"/“作为全局目录分隔符。如果你总是用”/"作为目录分隔符来表示一个路径...
  • Qdir 截图工具 java工具

    2016-04-23 21:16:16
    Qdir 截图工具 java工具
  • qt QDir 枚举类型

    2019-08-01 19:03:17
    QDir中的Filter枚举变量 enum QDir::Filter 与 flags QDir::Filters 中常用的枚举变量值及其含义如下: QDir::Dirs 0x001 列出目录; QDir::AllDirs 0x400 列出所有目录,不对目录名进行过滤; QDir::Files 0x002 列...
  • QDir的使用

    2020-02-26 20:01:36
    关于QDir 通常我们使用QFileDialog来选择一个文件路径; 但是当我们需要打开指定文件时(如:选择一个文件路径,获取到文件中的内容)时,则需要使用QDir 例: QDir dir(path); //打开文件 QStringList fileNameList...
  • QDir 类 -属性详解

    2021-06-29 09:45:49
    那么本文讲解目录信息类 QDir,用于获取有关目录的信息 函数详解 初始化 构造函数 QDir(const QDir &dir) QDir(const QString &path = QString()) QDir(const QString &path, const QString &...
  • Qt-QDir

    千次阅读 2016-09-07 16:52:46
    QDir提供了目录及目录下内容的接口,可以用来操作文件路径名、获取相关文件和路径的信息、操作下面的文件系统以及Qt的资源文件。QDir能指向相对路径或绝对路径: 绝对路径:QDir("/home/user/Documents") //begin ...
  • QDir过滤文件的坑

    千次阅读 2019-05-03 10:18:29
    QString qtVersionPath = PROGRAMS_PATH + m_qtVersion...QDir dir(qtVersionPath); dir.cd(m_qtVersion.mid(3)); qDebug()<<dir.path(); m_compilerVersionList = dir.entryList(dir.filter() | QDir::NoDotA...
  • enum QDir::Filter与flags QDir::Filters中常用的枚举变量值及其含义如下: QDir::Dirs 0x001 列出目录; QDir::AllDirs 0x400 列出所有目录,不对目录名进行过滤; QDir::Files 0x002 列出文件; QDir::Drives0x004...
  • QDir创建目录

    千次阅读 2018-11-27 09:49:07
    QDir下mkdir 和 mkpath 区别 mkdir:直接在Qdir的currentPath下创建目录 如果已经存在目录则返回失败 mkpath:根据传入的指定的路径进行创建 和Qdir对象没有任何关系 实例: #include &lt;QCoreApplication&...
  • QDir QFile QFileInfo

    2018-12-26 10:20:27
    QDir 对应的为对路径操作 获取当前程序所在的目录。 [static] QString QDir::currentPath() 获取当前光标所在的目录。 static] QString QDir::Path() QFile 对应的为“文件”的操作 #include ...
  • Qdir 资源管理器

    2014-05-10 23:08:48
    Qdir 资源管理器
  • Qt文件路径:QDir

    2021-09-23 12:08:33
    QDir 用于操作路径名、访问有关路径和文件的信息、操作底层文件系统。它也可以用来访问 Qt 的资源系统。 Qt 使用“/”作为通用目录分隔符。如果总是使用“/”作为目录分隔符,Qt 将转换路径以符合底层操作系统。 ...
  • Qt的QDir

    2020-10-21 22:31:09
    Qt的QDir类是在QtCore模块中, python获取当前路径的语句为: QtCore.QDir.currentPath() C++类似。
  • QDir setSorting 文件排序

    2021-05-27 17:56:02
    QDir tempDir11(dataPathStringForToday_1); QStringList filters; filters << "*.bin" ; tempDir11.setNameFilters(filters); tempDir11.setSorting(QDir::Name); 按照名字由小到大排序:
  • QDir 翻译

    千次阅读 2013-12-16 23:43:46
    QString QDir::canonicalPath() const Returns the canonical path, i.e. a path without symbolic links or redundant "." or ".." elements. On systems that do not have symbolic links this function wil
  • QDir类及其用法总结

    2021-04-16 14:20:36
    QDir类提供了访问系统目录结构及其内容的与平台无关的方式。 头文件:#include < QDir > QDir类用来操作路径名及底层文件系统,获取关于目录路径及文件的相关信息,也可以用来获取Qt资源系统的文件信息。 QDir...
  • QDir的使用笔记

    万次阅读 2016-04-18 17:26:56
    1.保存文件 有的时候我们在保存文件的时候,希望在程序相同目录下创建一个data文件夹用来专门保存数据结果文件。 这时候我们使用QFileDialog无法指定打开的... QDir* dir = new QDir(); //判断此路径下是否有data

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,788
精华内容 2,715
关键字:

QDIR